home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS Toolkit
/
BBS Toolkit.iso
/
rbbs_pc
/
jdrbbs08.zip
/
DOCS_ETC.ZIP
/
MENUCMDS.DOC
< prev
next >
Wrap
Text File
|
1993-04-05
|
196KB
|
3,944 lines
JDR_BBS .08
by
John Rohner
CONTENTS Line Topic
──── ───────────────────────────────────────────────────────
31 MENU SYSTEM
33 Definition
54 McEditor
171 Menus
246 Command Objects
341 Misc.
348 COMMANDS
394 Internal Commands
397 |xxx
402 >xxx
414 General Commands
2296 Message Commands
2745 File Commands
3540 CREATED COMMANDS
3547 Commands
3870 Final Notes
3930 Misc.
3942 NEXT
MENU SYSTEM
Definition What is a menu?
In the "good ole days" a menu was a file. This file
contained the commands users could use. The software handled
how these commands would be displayed, as well as what keys
were pressed for the commands.
All the sysop could do was decide which commands went into
which menu. Since then, menus have become more "ethereal"--
we use ANSI screens as what the users see, and we define what
keys the user types.
In this software, menus are: zero or more ANSI's grouped with
zero or more commands. Menu's are referenced by a three
character ID, known as the Menu ID.
The ANSI's you build outside the BBS software, using
something like TheDraw. Once you know what you are doing,
you will find text editors, such as PC-Write, to be helpful
as well to create, edit, and optimize your ANSI's.
McEditor For JDR_BBS, creating your menu's involve using the Menu
Command Editor System, or McEditor.
The following files are used by McEditor:
BBS_CMDS.DAT --Contains commands used in each menu.
MENUS.DAT --Contains each menu.
FX.TXT --Special effects for menu commands.
CMDS.DAT --Contains all usable commands.
CATEGORY.DAT --Contains where usable commands are.
BBS_CMDS.DAT and MENUS.DAT can be stored in each NODE.xxx
area. This allows you to have a different menu system for
each of your nodes.
FX.TXT is the only file you can edit yourself. It contains
the special effects strings that you can display after a
caller selects a command from your menus. It is a standard
text file. See the file itself for more information.
There are two ways into McEditor: "?" from the Configuration
menu (first go to the sysop menu), and <alt>F2 from the
waiting-for-caller screen (this requires that your comm port
not equal 0). Designing menus can sometimes get tricky--you
literally design yourself into a hole. For instance, you
make a change that stops your access to the sysop menu. That
is why the <alt>F2 key is there.
If comm port = 0 and you have gotten yourself in a hole, you
run JDRBBS.EXE /port=1 to change the comm port so you can use
<alt>F2, or you can run JDRBBS.EXE /1stcmd=xxxx (where xxxx
is any menu command, such as >S04) to immediately jump to
that command and execute it.
The McEditor screen looks something like so:
Menu ID: xxx ANSI: x:\xxxxxx\etc.
┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐
└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘
┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐
└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘
Category: xxxxx
┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐
└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘
┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐┌─┐
└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘└─┘
There is not that much to remember. What you see are
actually two separate systems: the top half of the screen is
the menu system, and the bottom half of the screen is the
command system.
The whole system is an "object oriented drag-and-drop menu
command system".
You can type "?" to get the commands, but they are pretty
straight forward: arrow keys to move, <ins> to edit, <del> to
delete, <enter> to pick up and drop down objects, <pgup> to
move to previous category or menu, <pgdn> to move to next
category or menu.
The "?" brings up help (and used hot-keys) when used on a
blank object. When used on a non-blank object, it reports on
the contents of that object.
The "/" key can be used to toggle ON/OFF continuous
reporting. When ON, every object you move the cursor across
will have its contents displayed--and the "?" will display
help alone. When OFF, "?" for help only works on blank
objects.
You can bring up a menu of Menu ID's to jump to with "J".
You can quit McEditor with either <esc> or "Q".
When <ins> is used while at the Menu ID field, or the
Category field, you are able to do a variety of things.
When at the Menu ID field, you can enter a Menu ID that
already exists, or that does not exist. Then you will be
asked what you wish to do: Create a new menu, Duplicate a new
menu, Swap menus, Jump to a menu, or rename the current menu.
[Enter] alone will abort any operation.
Create a new menu will create a new menu, at the end of all
the other menus, with the Menu ID you specified.
Duplicate a new menu will create a new menu, at the end of
all the other menus, with the Menu ID you specified and the
exact same commands as the currently displayed menu.
Swap menus will swap positions of the Menu ID you entered
with the currently displayed menu. Used for organizing your
menus.
Jump to a menu does just that, it displays the Menu ID menu
you entered.
When at the category field, you can enter a Category name
that already exists, or that does not exist. Then you will
be asked what you wish to do: Rename the current category,
swap the position of the current category with that matching
the text you entered, or create a new blank category with a
category name being the text you typed. [Enter] alone will
abort any operation.
It is easiest to just play around with it for awhile.
Remember that each command (menu or category) is a moveable
object: just [Enter] to pick it up, then move to where you
want to drop it (any menu or category), then [Enter] to drop.
Menu commands cannot be moved to categories. Category
commands moved to menus is really just copying over the
command name. Inter-menu and Inter-category object movements
are actually swaps--you swap the object you pick up with the
object you drop it on.
Menus Menus are made up of the following: a Menu ID, a menu ANSI,
and the menu's commands.
The menu ANSI can do everything the "dANS" command (see
below) can do (special smart codes, etc.).
While the ANSI is being displayed, and after it is displayed,
the software will accept any valid hot-keys for the menu
commands. The hot-keys available depends on the users, and
the hot-keys, Min SL and Max SL.
Each menu command contains: command to execute, minimum
required SL to use the command, maximum allowed SL to use the
command, the hot-key to use, whether it is active, special
effects row, column, effects number, and effects text.
You can quickly turn a menu command ON/OFF by a Y/N for the
active field.
The command itself must be a valid category command, or a
">xxx" jump-to-menu command.
The hot-key can be any keyboard character. Including
numbers, and characters like "!@#$%<>?":,."
Minimum SL and Maximum SL. The user must have the minimum SL
to execute the command. They must also be less than or equal
to the maximum SL to execute the command. If Maximum SL is
zero, then only the minimum SL is used for consideration.
If the user cannot execute the command because of SL
limitors, the special effects (if any) will still be
displayed.
By using upper and lower boundary SL's, we are able to define
multiple commands that use the same hot-key--they could be
designed to work differently for different SL ranges.
Special effects is text displayed after the user hits the
hot-key and before the menu command itself is executed. The
special effects themselves (what is shown etc.) is specified
in the file FX.TXT. In the menu command are four special
effects items: row, column, effect number, and text.
Row and column are converted to an ANSI "go-to-position"
string "[x;yf", which is inserted in place of "1" in your
FX.TXT file.
The text field is inserted in place of each "2" in your
FX.TXT file.
The effect number references which effect in your FX.TXT file
to use. The effect number should be a number from 51 to 99.
Thus you may define 49 special effects. The effect number
you define is executed when the menu was completely displayed
before the user hit the hot-key. If the hot-key was hit
before the menu was completely displayed, then effect number
- 50 is used (eg. 51 -> 1, 99 -> 49). Thus effects 1 through
49 should be effects 51 through 99, but adjusted to realize
that there may be no menu there (for example, a 51-99 effect
would use cursor positional and background colors, but the 1-
49 version would just need a more simpler version).
For the most part, special effects are optional. But some
commands do require them to at least properly position the
resulting command's text. These commands include the "change
phone numbers", "change passwords", etc.--any commands which
does not clear the screen/etc. first.
One "effect" the software does is hide the cursor at menus.
Currently this is done by displaying SHORT #442 after each
menu.
See also: ANSI'S
Command First and foremost, all commands are four letters.
Objects
There are three types of commands: "|xxx", ">xxx", and
everything else.
"|xxx" are system-level notation--you should never use this,
all functional commands are built upon these notational
(core) commands. These are known as "primitives".
">xxx" is a "jump to menu xxx" where "xxx" is a Menu ID.
This command changes the program flow to another menu. The
first action upon going to a new menu is to display that
menu's ANSI.
Any other 4 letter command is a constructed command. Created
by using the above commands, and parameters for the above
commands.
Parameters for any command always has a leading "_" before
it. Example: "LstF _001", "LstF" is the command, "_001" is
the parameter.
Half the commands have no parameters. The other half have
only one parameter. Only two commands: "DOOR" and "ifSL"
have two parameters.
The "|xxx", ">xxx", and any created 4 letter commands are
referred to as "objects".
When editing a category command, there are 78 characters
available for you to define the "functionality" of the
command. The functionality of a command is built up using
other commands and parameters. You can have a remark using
the "'" (apostrophe) character--anything on the line
following that character is ignored.
The key to understanding commands is that each 4 letter
command represents an object, whose functionality is defined
by the commands that make up that object. That is, like
painting, you create new colors from color primitives. Here,
you create new commands from command primitives.
Each command/object can be stacked/linked/joined/etc. just
like toy blocks. Think of each 4 letter command (and its
related parameters) as a toy block and the system is easier
to understand.
The key is that this is a block construction language, in
which you take blocks and mix-and-match them.
block types:
┌────┐ ┌─────────┐ ┌───────┐ ┌────┐
│cmds│ │pathnames│ │numbers│ │etc.│
└────┘ └─────────┘ └───────┘ └────┘
you then take these, and form larger commands:
┌──────────────────┐
│┌────┐ ┌─────────┐│
││cmds│ │pathnames││
│└────┘ └─────────┘│
└──────────────────┘
┌────────────────┐
│┌────┐ ┌───────┐│
││cmds│ │numbers││
│└────┘ └───────┘│
└────────────────┘
┌──────────────────┐
│┌────┐┌────┐┌────┐│
││cmds││cmds││cmds││
│└────┘└────┘└────┘│
└──────────────────┘
and bigger:
┌──────────────────────────────────────────────────────┐
│┌──────────────────┐┌──────────────────┐┌────────────┐│
││┌────┐┌────┐┌────┐││┌────┐ ┌─────────┐││┌────┐┌────┐││
│││cmds││cmds││cmds││││cmds│ │pathnames││││cmds││etc.│││
││└────┘└────┘└────┘││└────┘ └─────────┘││└────┘└────┘││
│└──────────────────┘└──────────────────┘└────────────┘│
└──────────────────────────────────────────────────────┘
Thus, you choose the reading difficulty: one big command,
many small commands, or something in between. The software
does not care. It then takes the commands you built, and
reduces them down to "system level" commands ("|xxx", ">xxx",
and "_" parameters).
All the 4 letter commands that exist are "built" upon "|xxx"
commands. 4 letters is a lot more readable then "|xxx",
which is why they are there--to make the commands created
more readable.
Misc. From any menu, the software automatically checks for a Zmodem
or BiModem upload. Users can upload by "just doing it" from
any menu, and the software will detect it and act accordingly
(jumps into the protocol, no searching done, not done if not
enough space).
COMMANDS
The commands are already organized by topic in the McEditor
files I included (for user, for sysop, events, etc.) so I
will organize them here as follows: General, Message, File,
and Created.
A <sysop> will be if the command was meant for the sysop (but
a few can be used by any users).
Registered commands are not shown, these are found in a
separate doc file I send for registered sysops.
Because of the way the menu system is implemented, you can
change any of these names if you don't like them.
Implicit to all the commands is that they will return to the
current menu when completed.
The text in brackets for the description line is the
"permutations" of the command (if the command needs
parameters or has multiple aspects of itself).
The most a command can have is:
Cmdx
Cmdx _xxx
Cmdx _Bxx
Cmdx _all
These break down as such:
"Cmdx" -- work with the current whatever.
"Cmdx _xxx" -- work with xxx whatever.
"Cmdx _Bxx" -- show a menu of all xxx's in block number
xx, and then do whichever whatever is
selected. "Use block xx".
"Cmdx _all" -- show a menu of all xxx's, and then do
whichever whatever is selected.
That is to say, the commands follow a common "expansion"
system. Where you first work with the current, then a
specified individual, then a selected group, then all.
The methods inside the brackets list those, of the above,
which may be used. If not inside the brackets, they may not
be used in that form. For example "DBEd _Bxx" means you
cannot use "DBEd", "DBEd _xxx", nor "DBEd _all" as commands.
Internal
Commands
|xxx ──Lowest, system, level functional command.
These should not be used by you. I mention them only to show
from where all commands come from.
>xxx ──Jump to another menu index.
Where "xxx" is any valid menu index number. Examples: >001,
>002, >017, etc. This command is a "goto menu xxx" command.
You may use the ">xxx" itself in menu commands, or reference
it to a category command. How you use it is your personal
preference, but if you have lots of, say, >001's, you might
want to define a command "Main" = ">001" if you think in the
future you might give Menu ID 001 a new Menu ID name.
General General commands serving a variety of purposes.
Commands
0Vot <sysop> ──Restart a voting question.
This option will, for a selected voting question, reset the
answers' field, in each user record, to zero. Zero is the
"user has not answered question yet" state.
This option is to be used when you; rework a current
question, replace a current question, or simply want to
hassle your users by having them re-vote on a question.
The old totals for this question are not reset, these will be
reset to zero automatically the next time you "Update Stats".
AnsQ ──Answer a questionnaire. [AnsQ _xxx]
Where "xxx" is any valid SURVEY.xxx file. "xxx" can be any
alphanumeric character.
This command will ask the user questions and get answers. A
simple "fill in the form" type system.
Answers are stored in ANSWERS.xxx and can be views using the
menu command "ShwQ".
There are only two types of lines in the SURVEY files: input
and output.
If a line contains only a number, it is assumed to be an
input line. When the form, is used and reaches one of these
lines, the software will wait for the user to enter
information at this point. The user will not be allowed to
enter information more than this number of characters long.
You may specify any number under 8192.
Lines that do not contain just a number, are output lines.
These lines are merely displayed. These lines may use the
SendTT/LINES.TXT "" codes. The lines should not exceed 126
characters in length. To do other stuff, like color,
remember that you can also include ANSI codes.
EXAMPLE
┌───────────────────────────────────────────────────────────┐
│Hi! Please answer a question:> │
│ │
│Do you like JDR_BBS [Y/N]? │
│1 │
│ │
│ │
│Thank you for answering.* │
└───────────────────────────────────────────────────────────┘
The following occurs when this example text is executed from
a SURVEY.xxx file:
1. Displays "Hi! Please answer a question:" followed by a
CR/LF (the ">").
2. Displays a blank line.
3. Displays "Do you like JDR_BBS [Y/N? " without a CR/LF.
4. Waits for the user to input an answer not exceeding 1
character in length.
5. Displays a blank line (to get off the question line).
6. Displays another blank line.
7. Displays "Thank you for answering." with a 1 second
pause (the ">").
The first ">" could have been just another blank line, and
each of the blank lines could have been replaced with ">"'s.
In minimalist form, either form will work, the example can be
reduced to:
EXAMPLE
┌───────────────────────────────────────────────────────────┐
│Hi! Please answer a question:>>Do you like JDR_BBS [Y/N]?│
│1 │
│>>Thank you for answering.* │
└───────────────────────────────────────────────────────────┘
See also: SENDTT, ANSI, ShwQ
Arch ──Work with an archived file.
View the contents of a ZIP/LZH/ARJ archive. Extract/test the
members of a ZIP/LZH/ARJ archive.
A file must have a ZIP/LZH/ARJ extension to be accepted,
self-extracting .EXE archives do not qualify.
<incomplete> files are not allowed--since by their very
nature there will be problems working with them.
Recursive archives, those members with full pathname
specification, are handled correctly.
Many users mistakingly think the [T]est Archive means [T]ype
Archive Member--which I do plan to do eventually.
Archives are viewed using interior subroutines.
Files are extracted by shelling to DOS and having the
archivers themselves do the extraction. Extracted files are
put into the file EXTRACT.ZIP in the UPLOADS area (file area
001).
When testing, the software shell's to DOS and executes the
appropriate test command to the archiver program. The output
from these programs is redirected out the comm port. LHA has
a a bug, and only the file names are seen remotely when
testing is done with .LZH files.
Some testing can take a while. Users may get impatient and
hang up. If this occurs, be assured that no other user will
be able to log on until the testing is completed, and the
user's session is properly terminated. Until then, the phone
will not be picked up for the next user. Another user cannot
log on during a "hung up on" archive testing and then be
"given into" the original caller's account.
AReq ──Add a request to the requests file.
The requests file is a standard text file containing 38
character requests from you or your users to your other
users. These requests may take any form, but it was designed
with the names of desperately-sought software in mind.
The purpose of the file is to give you, and your users, a way
of telling each other what they are trying to find.
There are 3 "levels" of requests type: requests, unprotects,
and SL based targeted requests. But the user only sees two
levels here, simple requests, and SL based targeted requests.
The requests file has the following structure:
First 10 characters: the "HiFilePtr" value of that entry.
The remaining characters: the request itself.
The "HiFilePtr" is used by "New Stuff" to show new requests
since a users last call.
For the first level, general requests, only 38 characters are
used. For the second level, unprotects, 77 characters are
used. For the third level, target requests, 12 characters
(that of a file name) are used.
The second level is actually just those entries containing
the word "unprotect".
The third level uses a file name's length. It was done with
the following situation in mind: users wanting a file they
see in my off-line lists, so they enter the file name here in
hopes that another user will "Target Upload" them that file.
In practice, however, the third level seems to get software
titles as well (although very truncated).
You may use a menu-based security level restriction to stop
users of a certain SL from using this command. To farther
stop them from doing third level requests, the software
relies on your "minimum SL to do Targeted Uploads" in "Alter
Settings".
See also: DReq, SETTINGS, TgtU
BMxx ──Execute a module you created. (BM01 to BM10)
This is for you programmers out there. I have included my
.OBJ compilation modules. You can add your own. BM stands
for "Bus Modules"--because that is what your are doing,
plugging modules into a software bus.
Let us say you do not like my Voting routine. You can write
your own (in any language that produces Microsoft compatible
.OBJ modules) or modify mine to your liking. Just give it
the same name as my voting routine. Then re-LINK the code.
That is good if you do not like one of my modules, or the
whole .OBJ is contained in one file. But if you want to add
something completely new. You use BMxx. Just name your
routine BM01, BM02, BM03, etc.
The BM routine you design cannot have parameters or make use
of global variables (unless it is in Basic).
Example: 1. write a GIF viewer routine, name it "BM01" (eg.
SUB BM01), 2. compile it into an .OBJ module, 3. re-LINK the
whole program (use LINK.DAT), 4. modify menu "007": if user
hits "G" the command is "BM01". Now, whenever you hit "G" at
menu 6, it will call YOUR GIF viewer routine (which is named
BM01).
While this means you will not have to re-compile the Basic
portion of the program, you will still need Basic PDS's
.LIBs to link it.
Otherwise, the BMxx commands do nothing.
Call ──Forced call-back verification.
This is a call-back phone verification command. It will hang
up on the user, and dial a phone number they specified. They
are then quized for their password.
The command is meant to be a "logon loop" command, stuck
somewhere in your logon list of commands.
When the command is executed, it first checks to see if the
caller has their attribute bit C set to ON. If so, it forces
call-back verification--in which case the user cannot get
past this forced call-back.
There is a setting: the security level value to give the user
after successfully passing call-back.
There are a couple of toggles: disallow long-distance
numbers, allow the user to continue their session after the
software has called them (and they pass the quiz).
The software will not allow a phone number that matches the
BBS's phone number.
It records in the log all passed and failed attempts.
It does no duplicate number checking right now, but it may in
the future. I do not think I will set it to disallow
duplicate phone numbers, just to flag them in the log when
they occur.
If user attribute bit D is set ON, then the user goes through
a forced password change after successfully passing call-
back.
There is one real problem with call-back verification: Long
distance number handling. If you stop LD calls, then you
cannot have users outside your area. If you allow LD
testing, then you have the potential for high LD bills--as
well as users running up your bill by giving LD numbers as
harassment.
In the future I'll have a toggle to "pass on through" long
distance numbers (if you do not want to either stop them or
test them). However, this will not eliminate the problems,
as users who want to keep their number secret will merely
give long distance numbers to gain access.
Perhaps the proper way to use call-back is for higher access
(after already having general access), when you want to give
a user a higher level. Then you can decide when the calls to
LD numbers are made.
What this is really useful for is to re-check a user. For
instance, when you suspect someone else has cracked their
account.
See also: SETTINGS, TOGGLES, User
Chat ──Attempt to chat with sysop.
This command asks the caller for a reason, then beeps the
sysop a couple of times, and will display the reason until
the user logs off or the sysop breaks in for a chat.
Should the caller try the option again, they get a polite "we
know, stop bugging us" type of message. But it does not re-
beep the sysop. This means users get only one attempt at
chatting per session--I have found this to be a perfect
balance.
The reason for the chat is stored and displayed in the "who's
on" status line. It will be visible whenever a menu is
displayed or DSZ file transferring is done. For GSZ or
BiModem, messages, listing of directories, etc. it will not
show up. Usually, after an attempt at chat, the first
command a caller types is the "List Files" command--can be
frustrating if you were turned around when they entered their
reason and looked over in response to the beeping.
In SHORT.TXT line 252, you may create a list. For now this
list contains; "ACCESS ELITE". You may add, or eliminate, as
many words as you like. They must be separated by a space.
Case does not matter. When a word in this list is found in
the chat reason, then you will not be beeped, and the caller
will get a note saying that they should look around for the
information rather than try chatting. Non-alphabetic
characters are removed before the comparison, so "ACCESS!!"
will be properly stopped. "HELP" would probably be a good
word to add to the list.
If the user enters a reason of one or two words, then you
will not be beeped, and the user will get a note saying that
they should try to form a more complete reason.
When a user wants to chat, the reason given is also stored in
the callers log. Further, if the user is undergoing Peer
Review, the reason is stored in their MESSAGE.Pxx file--so
voting users may use it to help evaluate the user.
You enter chat mode by typing <alt>c. To reduce the risk of
crashing the system, I recommend you only do this at menus.
You can hit <esc> then "1" while in chat mode to turn on
"kwazy colors". Whenever a character is typed by you or the
caller, it will get a different color.
To exit chat, hit <esc> then "c" (not at the same time). An
[Enter] is then automatically used as the "next key", if at a
menu, this will cause the menu to redraw. Otherwise, what
happens depends on where you did the <alt>c.
You enter split-screen (2-way) chat mode by hitting <esc>
then "2" in normal chat.
In split-screen chat, the person on the opposite end is
displayed at the top of the screen. All received text is
displayed in the upper window, and all typed text is
displayed in the lower window. This format is the same for
either end. In other words, both sides type text into their
respective lower window, and both see the other persons text
in their respective upper window.
In split-screen: you can type <esc> then "C" to exit chat
completely, <esc> then "1" to toggle kwazy chat ON/OFF,
<esc> then "2" to return to normal chat.
See also: SHORT.TXT, LOGGING, CONSOLE KEYS, SETTINGS
DBEd ──Work with a DataBaser database. [DBEd _Bxx]
Where "xx" is a number from 01 to 99. This routine calls up
DataBaser database "xx"--where "xx" is the BLOCKS.TXT block
number that defines the database.
From this, you can Add to the database, List the contents of
the database, Modify the contents of the database, Insert
into the database, and Delete the contents of the database.
I use this same routine to manipulate some of my own
databases. The following are DataBaser databases I use and
their menu access command:
DBEd _B08 is used to call up the user Linkages database.
DBEd _B09 is used to call up the Sysops database.
DBEd _B10 is used to call up the Message Base definitions
database.
DBEd _B36 is used to call up the Search Files definitions
database.
DBEd _B38 is used to call up the Door program definitions
database.
DBEd _B39 is used to call up the Events definitions
database.
DBEd _B41 is used to call up the File Areas definitions
database.
DBEd _B42 is used to call up the Security Levels definitions
database.
DBEd _B43 is used to call up a news items database.
DBEd _B47 is used to call up the Protocols database.
DBEd _B55 is used to call up the CONNECT strings database.
DBEd _B66 is used to call up the Node Lists database.
DBEd _B70 is used to call up the EchoMail AREA: Re-Mapping
database.
DBEd _B71 is used to call up the EchoMail Routing database.
The above databases are used internally, and assume you won't
be changing them. So don't.
See also: DATABASER, MESSAGE AREAS, FILE AREAS, DOORS,
SECURITY LEVELS, EVENTS, NET MAIL
DBVw ──List a DataBaser database. [DBVw _Bxx]
Where "xx" is a number from 01 to 99. This routine calls up
DataBaser database "xx"--where "xx" is the BLOCKS.TXT block
number that defines the database.
This lists the contents of a DataBaser database. Producing
the same output you get when Listing the database from
"DBEd".
This is useful when you just wish to show the contents alone.
See also: DBEd, DATABASER
DirV ──View a Directry database. [DirV _Dxx]
Where "xx" is a number from 01 to 99 corresponding with a
DIRECTRY.Dxx file.
See also: DIRECTRY'S
DOOR ──Execute a door program. [DOOR _EXITTYPE _FILETYPE _xxx]
Where "xxx" is a number from 001 to 999 corresponding to the
record number in your Doors database.
Where "EXITTYPE" is the type of exit from the BBS you wish to
do. This field is optional.
Where "FILETYPE" is the type of door-exit information file
you wish to produce for the door program. This field is also
optional.
See TECHDOCS.DOC if you want detailed information about the
door-exit files.
See also: DOORS
Dnws ──Display the news file if it exists.
It also displays personal news: the number of times the user
had their verification hacked at since their last call.
This will display all of your NEWS.xxx (where "xxx" is 001 to
999) files. They are displayed in order from newest (highest
number) to oldest.
Usually this command will be part of your "logon loop" of
commands the caller must go through before getting to a menu.
See also: News, PATHNAMES
DOSx <sysop> ──Shell to DOS.
Does a simple shell to DOS. No different from <alt>s except
that it is a menu command.
For additional security beyond a menu command security level
restriction, use the "PSWD" command to ask for a password.
DReq ──Display the Requests list.
I like to put this command after the various file area
contents listing commands ("LstF", "PagQ", "P&Sx", etc.)
which then forces users to always see the requests list.
A BBS is give and take. Too many users just take. This list
evens the playing field by allowing you to emphasize the
give. Forcing them to see it after they do a "LstF"/etc. is
a good way to remind them about the give part.
See also: AReq
dANS ──Display a file (ANSI's). [dANS _pathname]
Where "pathname" is any valid pathname. It may contain
wildcards.
This is the same command used to display the menu ANSI's.
The difference being that the menu ANSI's are checked for
valid menu keys, while this command only checks for [Enter]
and [Space].
[Space] will pause the display of the file, [Enter] will stop
the rest of it from displaying.
Besides the menu ANSI's themselves, this is only other way to
display files with "x<<y" smart text.
Files may be of any size.
If you include wildcards, then a random one of those that
match will be displayed. Remember, though, that "???" is
replaced by the node number.
Do not use any SendTT\LINES.TXT "" codes.
See also: ANSI'S
dBLK ──Show a text block. [dBLK _Bxx]
Where "xx" is a block number from BLOCKS.TXT.
This command will just output the contents of the block.
Each line is assumed to be one line and will be given a CR/LF
after it. The leading two block identifier characters are
removed first.
For blank lines, either use a block number with no text after
it or ">". You can use any of the other SendTT conventions
as well.
Only [Enter] is checked to stop the text, no [Space]-to-pause
is done. However, you can add [Space]-to-pause by using the
SendTT "+" at the start of the text.
dLIN ──Display a line of text from LINES.TXT. [dLIN _number]
Where "number" is any number from 1 to the last line number
in LINES.TXT.
This will display a single line of text from LINES.TXT. That
line of text may include any valid SendTT\LINES.TXT ""
codes, including the "continue to next line" "\\\\"
combination.
dTXT ──Display a text file. [dTXT _pathname]
Where "pathname" is any valid pathname.
The file must be a standard text file, with lines ending in
CR/LF's.
This command displays a single standard text file. [Space]
will pause the text, and [Enter] will cancel it.
A screen clearing code is sent before displaying the file.
The text is displayed in dark white unless it has some
internal ANSI color codes.
SendTT\LINES.TXT "" can be used.
The file can be any size.
dTX2 ──Display a text file with BBS name at top. [dTX2 _pathname]
This command is exactly like dTXT, except your LINES.TXT line
1 (BBS header line) is shown first, then the text file itself
is displayed. No screen clearing is done beyond that which
is in the header line.
See also: dTXT
dTX3 ──Display a text file with file's date. [dTX3 _pathname]
This command is exactly like dTX2, except the file's date is
shown at the top of display, after the heading, and before
the text file itself.
Also just before the date is a "[Space] to pause, [Enter] to
stop" line.
This allows you to have a file, such as a bulletin, that you
occasionally update. With the date, those reading the file
immediately know if they are reading an unchanged file, as it
will have the same date as they had previously read.
See also: dTX2
dTX4 ──Display a text file in a continuous box. [dTX4 _pathname]
Where "pathname" is any valid pathname.
This command displays a single standard text file within a
box. It will "box" the top, and do the sides for as long as
there is text, and then finally do the bottom.
Lines in the file must be between 0 and 76 characters in
length, and end with a CR/LF. This is because there is a
border line and a border space on each side of the text.
[Space] will pause the text, and [Enter] will cancel it.
The first line of the file is the heading line, and will be
centered at the top of the screen. The remaining lines in
the file are all treated as boxed text.
EXAMPLE
┌───────────────────────────────────────────────────────────┐
│Hi HoHo's │
│Yes folks! It's Hi HoHo time. │
│Can you say "HoHoHo". │
│ │
│ │
│Will display as: │
│ │
│████████████████████████ Hi HoHo's ████████████████████████│
│╔═════════════════════════════════════════════════════════╗│
│║ Yes folks! It's Hi HoHo time. ║│
│║ Can you say "HoHoHo". ║│
│╚═════════════════════════════════════════════════════════╝│
└───────────────────────────────────────────────────────────┘
dTX5 ──Display a text file in screen-sized boxes. [dTX5 _pathname]
Where "pathname" is any valid pathname.
This command takes a standard text file and displays it as
individual screens. Basically I got tired of editing ANSI
text screens, and made this to handle it. So now I can have
one long text file--but the user will see it as many ANSI
text screens. It "boxes" 19 lines at a time until the file
is complete.
If there are less than 19 lines left to do--they will not be
done. So, if your last screen is not being displayed, you
probably need to add a blank line or three.
The file must be a standard text file ending in CR/LF's.
Each line can be from 0 to 76 characters in length. This is
because there is a border line and a border space on each
side of the text.
The first line of the file is centered at the top of the
screen as the header line, and given an "x/y" paging
reference.
A "Paused" is done between each page.
EXAMPLE
┌───────────────────────────────────────────────────────────┐
│Hi HoHo's │
│Yes folks! It's Hi HoHo time. │
│Can you say "HoHoHo". │
│<lines 3 thru 19 are blank> │
│This is page two of Hi HoHo's │
│<lines 2 thru 19 of page 2 are blank> │
│ │
│ │
│Will display as: │
│ │
│█████████████████████ Hi HoHo's [1/2] █████████████████████│
│╔═════════════════════════════════════════════════════════╗│
│║ Yes folks! It's Hi HoHo time. ║│
│║ Can you say "HoHoHo". ║│
│║ <17 blank lines> ║│
│╚═════════════════════════════════════════════════════════╝│
│**[Paused]** │
│<screen cleared> │
│█████████████████████ Hi HoHo's [2/2] █████████████████████│
│╔═════════════════════════════════════════════════════════╗│
│║ This is page two of Hi HoHo's ║│
│║ <18 blank lines> ║│
│╚═════════════════════════════════════════════════════════╝│
│**[Paused]** │
└───────────────────────────────────────────────────────────┘
ENTR ──Wait for user to hit [Enter] or [Space].
This command simply waits for the user to hit [Enter],
[Space], timeout, or hang up.
It displays absolutely nothing.
It's useful for the text displaying commands in which the
"hit [enter] to continue" type of thing is already displayed
as part of the file.
Fpwd ──Show shuttle password.
Find out the shuttle logon verification. Use the SL field in
the menu command itself to determine who sees this.
GBye ──Log off the caller.
Logoff/hangup/goodbye. Routine to log off the user.
This is not needed. If you want, you can just have your
callers drop carrier to log off (to just hang up on their end
rather than selection a menu option). But this would
probably mean you get a lot of "sorry about dropping carrier,
but I could not find logoff option" messages.
│ A quote will be shown before hanging up unless you have this
│ toggled OFF.
See also: TOGGLES
GetP ──Select file transfer protocol.
This command lets users select a new protocol. All the
protocols in your protocol database to which the user has a
high and low enough security level value are shown.
"B" and "H" protocols will not show up. These represent
BiModem and H/S Link.
See also: PROTOCOLS
Hour ──Display the hourly usage graph for the last week.
Hitting "T" while the "graph" is being displayed causes the
actual numbers to be displayed rather than representative
boxes. This does not work if you wait till you are at the
[Paused].
This "graph" provides a wealth of system usage information
for the current day, and 7 days previous.
Each hour, of each day, is given a "box", which is color-
coded according to how active that hour was. This is hourly
utilization, the number of minutes of that 60 that the BBS
was being used.
The colors are as follows:
0 of 60 used no box
1 to 15 used brown box
16 to 30 used red box
31 to 45 used orange box
46 to 60 used violet box
This allows users to determine the best and worst times to
call, and to see any trends over the week in calling
activity.
ifSL ──If SL is less, then exit to menu. [ifSL _number _xxx]
Where "number" is any number from 0 to 32767.
Where "xxx" is any valid 3 letter Menu ID. This parameter is
optional.
This is a menu command control command. It will check the
current callers security level value, and if below "number"
it will return to the previous menu if "xxx" is not in the
command, or go to menu "xxx" if it is.
EXAMPLE
┌───────────────────────────────────────────────────────────┐
│If user's security level value is less than 10 then goto │
│menu "abc", otherwise display the ansi file "hiho.ans" and │
│goto menu "abc". │
│ │
│First, define the command "hiho" as: │
│ │
│ dANS c:\hiho.ans Paus │
│ │
│Then, define the command "if01" as: │
│ │
│ ifSL _10 _abc │
│ │
│Together, they do the job: if01 hiho │
│ │
│Of course, the following will also do the job: │
│ │
│ ifSL _10 _abc hiho │
│ ifSL _10 _abc dANS c:\hiho.ans Paus │
│ │
│Just a question of how complex you want to make the │
│command. │
└───────────────────────────────────────────────────────────┘
EXAMPLE
┌───────────────────────────────────────────────────────────┐
│Show nothing to level 5 users, show "ansi1.ans" to level │
│6 through 19 users, show "ansi2.ans" to level 20 to 99 │
│users and show "ansi3.ans" to users of level 100 and │
│above. │
│ │
│We don't include "_xxx" because we just return to our last │
│menu. │
│ │
│In long form: │
│ │
│ ifSL _6 dANS c:\ansi1.ans Paus │
│ ifSL _20 dANS c:\ansi2.ans Paus │
│ ifSL _100 dANS c:\ansi3.ans Paus │
│ │
│Or if you define "ansi1", "ansi2", and "ansi3" to do the │
│"dANS" part: │
│ │
│ ansi1 = dANS c:\ansi1.ans Paus │
│ ansi2 = dANS c:\ansi2.ans Paus │
│ ansi3 = dANS c:\ansi3.ans Paus │
│ │
│ ifSL _6 ansi1 ifSL _20 ansi2 ifSL _100 ansi3 │
│ │
│What occurs? Users with SL's less than six are exited │
│back to the menu. Those remaining see "ansi1.ans". Then │
│those users with SL's less than 20 are exited back to the │
│menu. Those remaining see "ansi2.ans". Then those users │
│with SL's less than 100 are exited back to the menu. │
│Finally those remaining see "ansi3.ans". │
│ │
│In other words. Not only doesn't it do what we wanted, │
│but it does something nearly useless. │
│ │
│This example was done to remind you of the power of │
│"Min SL" and "Max SL" in the menu commands themselves. │
│ │
│Instead of using "ifSL". You should make 3 menu commands │
│with the same hot-key. Using "ansi1", "ansi2", and │
│"ansi3" from above, you would create the menu commands as │
│such: │
│ │
│ Command Min SL Max SL │
│ ansi1 6 19 │
│ ansi2 20 99 │
│ ansi3 100 32767 │
└───────────────────────────────────────────────────────────┘
Init <sysop> ──Re-Initialize #NEWUSER record to default settings.
This new user record is what any new user will be given.
This option zeros out all the fields of the first record in
USERS. Only the name field (#NEWUSER), the security level
value (5), toggles (show line numbers, male, verification
assist on, L&D on, enter messages totals) and protocol (Z)
are given a value.
If you wish to modify the new user record any farther, use
"User Maintenance". Example, if you were to put 100,000 into
the uploaded bytes field, then all new users would be given
an initial 100,000 bytes of upload credit.
Any message areas that have the LOCK attribute will also be
automatically locked out of. However, all message bases are
toggled to ON, so if you wish to start off new users with
some message bases toggled to OFF, you will need to re-run
"Message Base Toggle" ("Aset") for all users.
This is not a general "restart #NEWUSER"--but a "re-set
#NEWUSER" to the setting I have hardcoded. Use this when you
really blunder your #NEWUSER set up and want to start fresh.
IT:U <sysop> ──Integrity test the user files.
This must be a menu command, not an event.
It will check out your USERS file and see if any of the
active users have parts of their records bad.
If a record is particularly bad (such as having a user name
that could not be entered by you) it will ask you if you want
to delete that user.
Any errors found are displayed on the screen and recorded in
ERRORS.LOG.
You can then use "User Maintenance" to clean up the bad parts
of those records.
ITUe <sysop> ──Integrity test the user files (event version).
This is the event version of "IT:U". It does not pause or
ask the sysop questions.
See also: IT:U
Jobx ──Access the skills database.
Add/Update/List of user fields of expertise.
Helps keep everybody informed on each others skills--to know
who to direct specific questions to, etc.
It just contains a user name and a text field. If not jobs,
you can use it for just about anything.
Each user is only able to do one entry--but they can update
it if they want.
Last ──Show the last few callers to the BBS.
This is usually standard as a "login loop" command. In which
you put it in your group of commands to execute before
reaching the main menu.
Included with their names are: location, connect rate,
minutes on-line, date and time of call, and the node they
were on.
If a user calls twice, or more, in a row at the same node,
then the oldest entry is used, but the minutes on-line is the
total of all the entries. In other words, the display is
condensed to show the "last few callers"--not the "last few
logons".
There is a setting for how many users to show.
There are toggles to: stop the showing of the current user,
stop the showing of all local (console) logons, and to limit
those shown to those that have called the current node.
See also: SETTINGS, TOGGLES
LLog ──Display the callers log.
Displays the callers log for that particular node in reverse
(from most recent entry to the oldest/first entry).
Included besides the user connection information are the file
transfer lines, and if the user is the sysop (or the sysop
has full console viewing ON) then any system information
lines are also shown.
See also: TOGGLES, LOGGING
Locx ──Get a user's City and State.
For updating/changing the user's City and State data.
The statistics that produce the "50 states" counts are based
on this field.
There is a toggle to turn ON/OFF whether you ask new users at
login to enter this data.
See also: TOGGLES
LogN ──Login the caller.
Initially it will use auto-name-detect to to get the users
name. However, if they just hit [Enter] alone, enter a name
less than 3 characters, "new", "guest", or "sysop" then auto-
name-detect is turned off immediately. Otherwise it is turned
off after the specified number of failed verification
attempts (currently 2).
Getting past auto-name-detect means to just hit [Enter] at
the verification question. If they type anything else, then
it is considered a hack attempt at that users name--and is
recorded as such for the user to see. It is also recorded in
the log.
New users are given a copy of the #NEWUSER record.
The console is beeped 3 times if the sysop calls on remotely,
or a user with attribute bit 9 ON calls remotely. Because of
the way it is implemented, it will also beep when a user
makes a mistake of entering the sysop's name or the name of a
user you want to know about. The beeps are not heard at the
remote end of the call.
Users of scripts should set their scripts to send "=name" for
their name. Putting a "=" in front of whatever you enter for
a name causes auto-name-detect to be turned off.
The "force password change" counter is reduced here with each
login. When it gets to 1, the user must change their
password or they will not be allowed past here into your BBS.
If the value is zero, this feature is disabled. Even if you
do not want this as a scheduled forced-change, it is useful
when you suspect someone else is using their account (just
use "User Maintenance" to set this value to 1).
If you allow handles, names must be at least 3 characters in
size. If you do not allow handles, then the first name can
be one character, but the last name must be at least two
characters.
The file NOTNAMES.TXT can be used to stop names. It is
checked for an exact match when the user enters either a
first name and/or full name. Example: NEW stops the name if
the user typed NEW<ret> but not if they typed NEW NEW<ret>.
To stop NEW NEW<ret> you need a NEW NEW entry. Case does not
matter, leading and trailing spaces are ignored.
If there is less than 2K of drive space, then no users will
be allowed to log in.
Besides the main "user name" question, you may set a toggle
to ask for a "second name". The main name question is stored
as the user name, but this question has its data stored as
part of their SysopNote field. Useful if you want both an
Alias and a Real name (although usually asking for one or the
other is the norm).
There are settings for number of name and password attempts,
and for maximum number of users allowed.
There are toggles for asking for location, for "second name",
and for sysop name protection.
There are user toggles for password help.
There are user attributes for beeping and locking out.
See also: LOGIN, SETTINGS, TOGGLES, UsrT, User
LstA <sysop> ──List contents of the file and user indexes.
Useful for finding out if the indexes became corrupt.
LstU ──List active users.
This routine lists all the users on the system. The user may
choose to show all users, or those whose name contains a
search string.
It includes some other minor information like City and State,
number of logons, and their UL's and DL's.
Hitting "-" will restart the listing, in the opposite
alphabetical order (A-Z or Z-A, depending on what it was
doing.)
The #NEWUSER record is not shown.
LUSL <sysop> ──List active users by security level.
List users by security level, highlighting those who have not
called within the last x number of days.
You can enter either a single SL, or a "x to y" range. You
cannot enter a "-'ve to -'ve" SL range, the nearest allowable
equivalent is "-'ve to 0".
Users whose sysop note field is not blank will have "n" shown
also.
Hitting "-" will restart the listing, in the opposite
alphabetical order (A-Z or Z-A, depending on what it was
doing.)
The #NEWUSER record is shown.
MCEd <sysop> ──Menu command editor (McEditor).
This is what you use to edit the menu command's and category
commands that make up the menu system.
See also: MENU SYSTEM
News <sysop> ──Add-to/create news file.
This allows you to add text to the end of the latest news
file, or create a new news file.
If you put in a news item, then re-run this and tack on
another news item. The additional news item appears on the
very next line after that first item. So, when adding
additional items, put a space on the first line (line 1) of
the new item to add a separator line in the news file if you
want to have the items separated.
It is just like messages.
Just hitting return at line 1 when there is no news file will
abort this, if there is a news file a single blank line will
be appended to its end.
News files use the file names NEWS.001 to NEWS.999. When
creating a new news file, the new file is given the next
higher number of the latest news file (if latest is .002 then
new one is .003) or .001 if there are no current news files.
See also: Dnws
NewS ──Show new stuff since last call.
This option will list any new public messages, new uploads,
and new requests.
Messages are listed from newest to oldest for each message
base (starting at number 1). Private mail is not shown).
Message bases for which users do not have access, or have
toggled OFF, are not shown. No distinction is made as to
which base the message is in (one can usually tell), but all
new messages for a particular base are grouped together.
New files are listed in order of newest file to oldest. All
file areas to which the user has access are examined--note,
there is no distinction made between the file areas.
Any descriptions with "}x" codes will not have those codes
expanded, showing the "}x" and allowing others to learn which
code was used.
Invisible or <incomplete> files will not be listed.
New requests are listed from newest to oldest. The requests
will include targeted requests, even though the user may not
have SL enough to do a target upload.
Keep in mind that messages are considered new until read,
files, requests, and ramblings are new since the callers last
logon. Which means, that unless the user takes care of the
new messages (by reading them, re-setting the last-read
pointers, or toggling OFF the areas) they will continually
get the new messages listed when they do New Stuff.
Ninf ──Higher access information.
This routine displays ANSI screens relating to what the user
has to do to obtain the next level of access.
The screens to be displayed are ANSI files.
The filename's must have the name: filename.xxx, where "xxx"
is the Security Level database record number. Not the
security level value, nor the security level show value
(since these values can range from negative to 32767).
Example: If record 1 is SL 5, record 2 is SL 10, and record 3
is SL 20. You would want three files: filename.001,
filename.002, and filename.003.
Filename.001, Filename.01, and Filename.1 will all be
considered Level 1--but Filename.010 and Filename.100 are not
(they are 10 and 100, respectively).
If a level does not have an access screen/file, then the
highest available one is used (at a level lower than theirs)-
-example: if SL 95 does not have an access screen, but SL 90
does, then SL 90's screen will be displayed.
For multiple access screens for a single level, they should
have filename's such that, when sorted, they appear in the
order you want them displayed. Example: ACCESS1.001 and
ACCESS2.001 will first show ACCESS1.001 to your level 5
users, and then show ACCESS2.001 after that to those same
users.
If the user is undergoing Peer Review, or has failed Peer
Review, then Filename.000 is displayed rather than the file
name corresponding to their security level.
Note ──Change login note.
This allows users to enter a short note to themselves. The
text is stored in their user record, and upon login is shown
back to them.
Example, if a user was not able to chat with the sysop, then
he can leave a reminder to himself, "Chat with sysop about
new modem". Then when they next logon, they will get their
note: "Note: Chat with sysop about new modem" just before
they are informed of any new mail.
Notes are shown for every logon until the user again clears
the note field.
It really is quite useful, saves on users having to keep
notes by their computer about what they were last doing on
each BBS they call.
Pass ──Change password.
This routine is for changing a user's current verification.
When a password is changed, the "force password change"
counter is reset. The value given for the reset is
#NEWUSER's password reset value. A zero disables this,
otherwise when it gets to 1 the user must enter a new
password before logging in.
See also: User, LogN
Paus ──Pause and wait for [Enter]
This routine displays "**[Paused]**" and waits for the user
to hit [Enter] or [Space].
This command is used internally in a lot of places. Yet,
many commands, particularly those that display information
screens, have been designed without internal "Paused" calls,
so you can decide whether you want to pause at that point, or
display some additional information on that same screen
before doing a "Paused". Example: maybe you want to send an
ANSI screen of data to fill up the bottom part of the screen
when "Show Last Few Callers" is using up the top part at
login.
The text for the paused is LINES.TXT line 0003.
Pro0 ──Profile another user.
The routine will ask the caller for a user to examine.
This routine provides the user with detailed information
about another user.
First PROFILE3.ANS is displayed, then PROFILE4.ANS, then a
"ProA" and finally a "ProB" are done.
The two ANSI's can have the "xx<<y" smart codes, but
instead of giving information about the current user, they
will insert information about the requested user.
See also: ANSI's, PATHNAMES, ProA, ProB
ProA ──Show profile screen 3.
This is a third profile informational screen.
It summarizing how the user compares with the averages of the
users in the other SL ranges.
The average of the SL range to which the user belongs has the
user's own stats subtracted from the totals before
displaying.
The totals are distorted slightly: as the totals represent
the last time "Update Stats" was run, and the user's record
represents current values--this is only really noticeable
when the SL range has only one user (such as the sysop
range).
The individual security level breakdowns are done by security
level show values--that is, they represent the totals of all
the security levels with that same show level value. Except
when the user is the sysop, then the individual values for
each real security level are shown.
It is called "profile screen 3" because that is when it
appears with "Pro0", but you can mix and match it into
anywhere.
ProB ──Show profile screen 4.
This is the fourth profile information screen available.
It summarizes how many messages the user has read in all the
message bases except Private Mail (E-Mail)(area 001).
The Private Mail area is done, however, for the sysop. This
allows you to get an idea of the distribution of your
messages, which you can use to concentrate your deletion
efforts.
It is called "profile screen 3" because that is when it
appears with "Pro0", but you can mix and match it into
anywhere.
PRvw ──Vote on a Peer Review application.
This command is usually placed in your logon loop of
commands.
If the user has the proper security level, and has the can-
do-peer-reviewing attribute ON, and there is a review to vote
on, then they are given one.
This command may be a normal menu command if you would like
users to vote on more than one review per logon.
If the number of reviews at any one time is about 1/2 of the
number of users who can do the review, then once per logon is
probably best. But for when you have a lot of reviews and
few qualified reviewers, then a menu option to do as many as
they want is probably best.
See also: PEER REVIEW, User, SETTINGS
Pset <sysop> ──Display and alter the various system pathnames.
See also: PATHNAMES
Quot ──Display a quote.
This routine clears the screen and displays a quote from the
GOODBYE.TXT file.
GOODBYE.TXT is a standard text file. Each quote is separated
by a single blank line. Each line should not exceed 79
characters. For the quote's reference, put a "--" in front
of the reference--this tells the software to change the color
appropriately.
You can add new quotes into the file as you like.
Technical note: When you add new quotes into the middle of
the file, the software may require that one caller/quote goes
by before it is properly readjusted. This one quote, the
first one after you alter the file, may be chopped in half.
After this one occurrence, the quotes will display properly.
The reason for this is that the quote routine keeps track of
where it is in the quote file so when you "pull out the rug"
on this pointer by altering the file, it needs a single quote
request to readjust.
Quotes are read in one after the other, so they are not
random. However, users are random. Which effectively
randomizes the appearances of the quotes for any single user.
Unlike every quote file I have seen, I did not include the
"inane" quotes. All the quotes here either have a truth:
about the human condition, about life, or is just ironic.
For most, there are multiple levels of meaning--they use a
"literary" writing style.
To save trouble re-searching quote files for quotes, below is
a list of files that I have already examined:
Auntie 5.11 Fortune Cookie 1.3
Idealist Lynx II
Maximus 2.00 Sage v1.2
Wisdom of the Ages
Ramb ──Ramblings subsystem.
This command sends you into the Ramblings message-file
system.
See also: RAMBLINGS
RemL <sysop> ──Remove a line in any text file.
Used for removing reviews, requests, etc.
Normal operation has it searching for any line within a file
that contains a search string. With File Reviews and BBS
Reviews, however, it returns with the whole review.
You are always prompted to confirm the removal of the text.
It initially brings up a menu of all the files in
BBS\GLOBAL\TEXT, but you can select any file anywhere.
The software itself, will automatically remove file reviews
when you delete the file from the on-line file areas.
Revw ──Add/Update or List reviews of other BBS systems.
The reviews are similar to file reviews; multi-line, same
look. All the reviews for one phone number are clustered
together under that phone number.
The BBS Reviews list contains four objects of interest: the
BBS's name, the BBS's phone number, the review itself, and
the name of the reviewer.
It is not meant as a general one-liner database of BBS
numbers, but rather a serious review or remark system about
BBS's in your area, or you field, etc. Probably as few as 50
phone numbers will make it so large as to be useless--since
it will usually be about 10 lines of review for each phone
number.
It is pretty much equivalent to a message area dedicated to
reviews and information about other BBS's--only a lot more
organized and readable.
Ring ──Menu-based call-back verification.
This is the menu version of the "Call" command.
It does a call-back phone verification.
Unlike "Call" it does not require that user attribute bit C
be ON.
If this command were stuck in the "logon loop" of commands,
every user would have to do phone verification at each logon.
The real purpose of this command to provide a menu
alternative to "Call"--in which users can do call-back at
their leisure. This is where the setting that gives the user
a higher SL value is useful.
Passing call-back verify changes the user's home-phone
number. This command is a practical alternative to "UsrP"--
as it then guarantee's that the information in the user's
home-phone number is indeed correct.
See also: Call, User
ShwQ ──Show results of a questionnaire. [ShwQ _xxx]
Where "xxx" is any valid SURVEY.xxx file. "xxx" can be any
alphanumeric character.
A simply answer display system. It just pages through the
answers by plugging them back into the questionnaire and
displaying the two combined.
If you have a question and want its tally, then use the
voting system to ask the question.
See also: AnsQ
SLog <sysop> ──Search the callers log file.
Searches the callers log for a matching string. Returning
with both the entries found and the caller to whom those
entries belong.
Mainly useful for finding out who has been downloading a
file(s).
For instance, just before I delete a large program--made up
of a few large files--I run this with a common part of the
file names. This allows me to make sure all those who were
trying to download the program did indeed get all the files
(if they did not then I wait a couple days before deleting
the files they have not yet downloaded).
Spwd ──Query the user for the shuttle password.
If they get it wrong the system hangs up on them.
The default password is SHUTTLE--you can (should) change this
in LINES.TXT.
See also: LINES.TXT, Fpwd
Sset <sysop> ──Alter and display the various system settings.
See also: SETTINGS
Stat <sysop> ──Revise statistics.
Update the system statistics by re-calculating all the stats.
This is usually run as an event each night. Although I
myself just have it as a menu command and do it once a month
(the rankings and numbers do not change that significantly
that fast).
This also updates/repairs any voting results. Since voting
tallies are only done for active users, if you deleted a user
who had voted, this will remove their vote from the voting
question's tallies.
When you change (via "Change Settings") the number of users
to appear in the rankings screens, or when you change the
number of security levels, you should run this immediately or
you will see a lot of nonsense when you display the
statistics for security levels or rankings.
For the "worst stats" screens, zero entries are ignored--
since most users will have these. You can also define the
minimum SL and number of logons that users must have to get
onto these lists. For instance, I have it set up so that a
user needs at least 3 logons to make it onto these worst
stats screens--anything less and they are probably soon to be
off your BBS anyways.
Until you get enough users, the worst stats screens might
appear odd (in the number fields).
See also: SETTINGS
Sts1 ──Display internal statistics screen 1.
This displays a rankings list of the top downloaders in terms
of bytes downloaded.
Sts2 ──Display internal statistics screen 2.
This displays a rankings list of the top downloaders in terms
of files downloaded.
Sts3 ──Display internal statistics screen 3.
This displays a rankings list of the top uploaders in terms
of bytes uploaded.
Sts4 ──Display internal statistics screen 4.
This displays a rankings list of the top uploaders in terms
of files uploaded.
Sts5 ──Display internal statistics screen 5.
This displays a ranking list of those with the most logons.
Sts6 ──Display internal statistics screen 6.
This displays a ranking list of those with the most messages
posted. The totals represent all types of message (public,
private, feedback, and net mail).
Sts7 ──Display internal statistics screen 7.
This displays a rankings list of the worst downloaders in
terms of bytes downloaded.
Users below a sysop defined minimum number of logons or
security level value, or have a zero value, are ignored.
See also: SETTINGS
Sts8 ──Display internal statistics screen 8.
This displays a rankings list of the worst downloaders in
terms of files downloaded.
Users below a sysop defined minimum number of logons or
security level value, or have a zero value, are ignored.
See also: SETTINGS
Sts9 ──Display internal statistics screen 9.
This displays a rankings list of the worst uploaders in terms
of bytes uploaded.
Users below a sysop defined minimum number of logons or
security level value, or have a zero value, are ignored.
See also: SETTINGS
Stsz ──Display internal statistics screen 10.
This displays a rankings list of the worst uploaders in terms
of files uploaded.
Users below a sysop defined minimum number of logons or
security level value, or have a zero value, are ignored.
See also: SETTINGS
Stsy ──Display internal statistics screen 11.
This displays a ranking list of those with the least logons.
Users below a sysop defined minimum number of logons or
security level value, or have a zero value, are ignored.
See also: SETTINGS
Stsx ──Display internal statistics screen 12.
This displays a ranking list of those with the least number
of messages posted. The totals represent all types of
message (public, private, feedback, and net mail).
Users below a sysop defined minimum number of logons or
security level value, or have a zero value, are ignored.
See also: SETTINGS
StsT ──This displays the system totals per security level.
Because of rounding, the percentage totals may not actually
add up to 100.00%--usually 99.99%.
The numbers are generated when you do a "Stat" command.
Because of this, they do not represent current totals, but
the values at the time the command was run.
This is most notably true of the Users field, the total users
represents the current system tally, but the breakdown is the
breakdown of the users when you last updated the stats.
The individual security level breakdowns are done by security
level show values--that is, they represent the totals of all
the security levels with that same show level value. Except
when the user is the sysop, then the individual values for
each real security level are shown.
See also: STATISTICS
SysP ──Change data phone number.
This routine changes/updates the user's BBS/data/second phone
number field.
Togs <sysop> ──System/sysop toggles.
Various system toggle-able options.
See also: TOGGLES
Type ──Display text in any file.
This routine will display all the "text" in a file. The file
need not be a text file (indeed, it is designed to read non-
text files).
It asks the user for a file name to display. Users may only
type files in the on-line directories, but the sysop can
display files that are anywhere.
It does an acceptable job of reading any text file, and a
very good job of reading any non-text file. This is because
the text first has all its non-text characters converted to
spaces, and then all its spaces reduced to a single space
before being displayed. Text files get a little scrunched
up, and non-text files get a lot cleaned up.
User <sysop> ──Edit a users' record.
"User Maintenance." Modify the various fields of a user's
record.
This routine can be called from anywhere with <alt>u--but you
should only do it at the waiting-for-caller screen or a menu.
There is a command to access it from when reading messages as
well.
Only active users can be modified. To create a new user, you
need to do a login as that user. To modify a deleted user
you need to first undelete that user.
Items not normally allowed in some fields are allowed here.
For instance, characters a user is not allowed to enter for a
city and state, SL's that are out of range, etc. You are,
however, only allowed to enter valid characters for the
verification field. Also, do not enter commas or periods
with numbers.
If you modify the user's elapsed time field, remember that
this is only for today, it becomes zero the next day the user
calls.
For the upload bytes and download bytes fields, you can enter
"-xxxx", "xxxx", and "+xxxx". Where "xxxx" is any number.
"xxxx" changes what is there. "+xxxx" adds "xxxx" to what is
there, and "-xxxx" subtracts from what is there. Example: if
the user has 250,000 and you type +50 they will then have
250,050.
For minute-credit and minute-megabyte fields, you may enter
positive (eg. 5, 10, 100) or negative (eg. -5, -10, -100)
values. These are the only fields for which negative values
are allowed.
For dates, you must use the MM/DD/YY format.
For the Attribute field, the best thing to do is enter "?" if
you want to change anything. Entering a "1" will delete the
user.
When entering attributes use a 1234567890ABCDEF letter for
each bit you want to set (1 = bit 1, D = bit 14, etc.) You
cannot "just add" a bit, example: if "0" is set and you want
to set "B" you cannot just type "B" you must type "0B" or the
"0" bit will become un-set.
Bit 1: ON if user is deleted.
Bit 2: ON if user is locked out.
Bit 5: ON if should trap user's chats.
Bit 6: ON if should trap user's sessions.
Bit 9: ON if should beep the console when this user logs on.
Bit 0: ON if user has not yet passed Peer Review. This
should be set ON in #NEWUSER if you want all new
users to go through Peer Review.
Bit A: ON if user is an AI. This will be used in the future
for "smart" file transfers between JDR_BBS's.
Bit B: ON if user can, but doesn't want to, review peer's.
For those users who do not like the idea, but are
good enough to rate that higher SL.
Bit C: ON if user has not passed Phone verification. When
ON, a user will be asked to go through call-back
(phone) verification (at whatever point the command
RING is executed in your login loop). To force all
new users to go through call-back verification, set
ON in #NEWUSER.
Bit D: ON if user should be forced to change their password
after successfully passing call-back/phone
verification.
Bit E: ON if user's uploads can skip being validated. That
is, any uploads by this user are immediately
validated. This only matters if you have "all
uploads require validation" ON.
Hit [Enter] alone at any of the fields to not change it.
If a user has failed Peer Review, and you wish to make a note
in the Sysop Note field, then keep the first 8 positions
blank--so the software does not get confused and think the
user is still undergoing Peer Review.
For "Logons Until Password Change", use 0, 1, or 2-255. 0
turns forcing a password change off. 1 forces a password
change at the next logon. 2-255 will force a change after
that many logons.
│ When you delete a user, the software will also delete the
│ user's Peer Review if they are undergoing that (it handles it
│ just as if the user passed or failed, moving the text to
│ DEL_MSGS.TXT), and it deletes any remaining Private messages
│ in any private message area TO: the user.
UsrP ──Change home phone number.
This routine changes/updates the user's home phone number
field.
If you are using forced call-back verification, it might be
better to not make this command available. Then the phone
number the user passed call-back with will always be stored
here (that is, the user will not be able to change it).
UsrT ──User toggles.
This routine toggles ON/OFF various user preferences.
┌─Toggles────────────────────────────────────────────────────────On─────Off────┐
│ A. Beep after uploads or downloads are completed. ▄ │
│ B. Entering mail: show line numbers. ▄ │
│ C. Reading mail: show total lines at the top of the message. ▄ │
│ D. Reading mail: no screen clearing if message is not to you. ▄ │
│ E. Show the last few callers screen at login. ▄ │
│ F. Login: password assist ("first letter is..."). ▄ │
│ G. Show L&D/Point values when viewing on-line lists. ▄ │
│ H. Active (beep) grammar checking when entering messages. ▄ │
│ I. Reading mail: show number of replies the message has. ▄ │
│ J. Reading mail: show number of times the message was read. ▄ │
│ K. Reading mail: show the date the message was last read. ▄ │
│ L. Entering mail: show total number of bytes. ▄ │
│ M. Entering mail: show total number of words. ▄ │
│ N. Entering mail: show total number of lines. ▄ │
│ O. Avatar support by your communications program. ▄ │
│ P. Gender: you are a male (otherwise a female). ▄ │
└──────────────────────────────────────────────────────────────────────────────┘
Beep after uploads or downloads are completed.
A beep will sound on the callers end when they do a file
transfer.
Entering mail: show line numbers.
When entering a message, you can have it not show the
line numbers.
Reading mail: show total lines at the top of the message.
If there are more than 10 lines in the message, then it
will show the number of lines in the message at the top
of the message.
Reading mail: no screen clearing if message is not to you.
To speed output of messages, you can have it not do a
clear screen and bring up the reading messages command
line, but instead just race through all the messages.
If the message is TO or FROM you, however, it will stop
and bring up the command line.
When ON, you want paged message reading. When OFF you
want continuous message reading.
│ Show the last few callers screen at login.
│ If you have a "show last few callers" command either in
│ a menu or in your logon loop, then if the user turns
│ this OFF, that command will not show anything for the
│ user.
│
│ It is useful when the user would rather not be bothered
│ with the information. Some login loops of commands can
│ get quite long--and quite tiring for frequent callers--
│ this helps a little.
Login: password assist ("first letter is...").
If you don't call a lot--you will probably forget your
password. When this is ON, if you get your password
wrong, it will give you the first character as a hint.
If this is OFF, it will not give you the hint unless you
have not called in over 30 days. Then it is assumed you
probably forgot the password and really could use the
hint.
Show L&D/Point values when viewing on-line lists.
If you are interested in the L&D system, and the values
that the files are currently at, you can show them by
having this ON.
Similarly, if you don't care, you can turn this OFF--
speeds up listing of the contents of the files area a
bit.
Active (beep) grammar checking when entering messages.
When this is ON, then when you are entering the text for
a message, each word is spell-checked. When the word is
not found, you will hear a beep.
You can toggle this ON and OFF while entering a message
by typing a "//G".
Reading mail: show number of replies the message has.
When reading messages, you can see the number of replies
the message has gotten so far.
Reading mail: show number of times the message was read.
When reading messages, you can see the number of times
the message has been read so far.
If it has not yet been read, nothing is shown.
Reading mail: show the date the message was last read.
When reading messages, you can see the date the message
was last read by someone.
If it has not yet been read, nothing is shown.
Entering mail: show total number of bytes.
When entering a message, you can show the total number
of bytes the message uses just before the command line.
Entering mail: show total number of words.
When entering a message, you can show the total number
of words the message uses just before the command line.
Entering mail: show total number of lines.
When entering a message, you can show the total number
of lines the message uses just before the command line.
Avatar support by your communications program.
If your communications program supports Avatar screen
codes, then you should set this on the BBS end, and set
the appropriate toggle on your end. It does improve
speed.
Gender: you are a male (otherwise a female).
This is used in some door programs.
Vers ──Version information.
This displays the current version of the BBS software.
Vot0 ──Voting questions subsystem.
This routine cycles through all the voting questions,
allowing users to enter/change their answers and display the
totals.
The allowed commands are: "N", "[Enter]", option letter, or
question number.
"N" moves to the next question.
"[Enter]" quits the reading of the questions.
An option letter changes the user's selection for that
question. Then moves on to the next question.
A question number will jump to that question.
If you do not have any kind of forced voting, then "No
Opinion" can be a valid answer (with forced voting, it is
equivalent to "not answered").
See also: VOTING
Vot1 ──Forced voting question.
If they have not answered a voting question, this command
will ask them one, and only one.
If used just after a user logs in, then it is essentially
mandatory voting, they either answer the question, or next
logon they get the same question again. It is not really
mandatory, although it is highly suggestible.
Although commands are listed, anything the user types will
exit the voting system--since only one question was to be
answered.
Selecting "No Opinion" is like not voting, and does not count
as a valid forced vote.
See also: VOTING
Wait ──Pause for one second.
This routine will cause a 1 second pause.
For menu flow control. Perhaps after a "dLIN" call or
something.
Nothing is displayed.
Welc ──Welcome the user and find their mail.
Normally, when reading mail, a user may hit any valid key
while the message is being displayed. This is not true when
reading mail while logging in here. It is set up like this
to avoid inadvertent message commands (if you hit [Enter]
before the message is done displaying, it is a pain to track
it down again).
If a user chooses to not read their new mail, then when they
again log on, they will get (at least) that same report of
the number of new messages--since only reading the messages
from this point does their "new messages waiting" data get
cleared. Example: if they answered "no" to "read new mail
now?" and went to Private Mail and read and deleted their
mail, then when they again log on they will get "new
messages" again--except when they try to read it they will
get "no messages found." The moral is: this is the only
place to read new mail. It is not the only place you can
read new mail, but if you got new mail, it is least confusing
by reading it here.
This routine also handles displaying of the user note, the
Peer Review voting, and the scanning of waiting mail.
See also: LOGIN
Zusr <sysop> ──Undelete users.
You are presented with a paged listing of all the deleted
users, from which you may select to undelete a user.
Message These are commands that have to do with messages or message
Commands areas.
See also: MESSAGE AREAS, READING MESSAGES, ENTERING MESSAGES
Aset ──Toggle message areas.
This routine handles the toggling ON/OFF (active/inactive) of
message bases for a user.
The sysop has the power to toggle ON/OFF any message base for
all the users with this routine.
If a message base says "RESTRICTED", then the user is locked
out of it. Only the message-op of that message base may
unlock them.
Sysops: to change all entries: first change your toggle to
what you do not want it to be. Then select to toggle all,
and then all users (including you) will get the opposite of
what you have.
Last-message-read pointers and locked/unlocked status are
maintained properly.
To actually "turn off" a message area from everything, just
give it an extremely high access SL.
dHUB <sysop> ──Contact hub and exchange mail.
This command will attempt to call your local hub, and
exchange net mail with it.
This is usually used as an event option, but can be a
<ctrl>Fx command. It cannot be a menu command because it
calls out.
See also: NETMAIL AND ECHOMAIL, SETTINGS
Eall ──Leave a message to ALL. [Eall or Eall _xxx]
"Eall" to leave the message in the current area.
"Eall _xxx", where "xxx" is the message area (001 to 999) in
which to put the message. "xxx" will become the current
area.
Send a message TO: ALL in a message area.
This is useful for message bases in which you want all
messages to be sent to "all" (like Fellow Sentient Beings).
This differs from giving a message base the ALL attribute in
that with this users may change the "all" default to an
actual name, and replies are not labeled "TO: ALL" but
instead, also, given an actual name.
Eany ──Leave a message in the current area. [Eany or Eany _xxx]
"Eany" to leave the message in the current area.
"Eany _xxx", where "xxx" is the message area (001 to 999) in
which to put the message. "xxx" will become the current
area.
Messages can be sent to any current user, or ALL.
Esys ──Leave a pvt msg to msg-op of msg area. [Esys or Esys _xxx]
"Esys" to leave the message to the message-op of the current
area.
"Esys _xxx", where "xxx" is the message area (001 to 999) of
the message-op to send the message to. "xxx" will become the
current area.
This will send a private message (E-Mail) in area 001 to the
message-op of an area.
Usually just used in area 001 as "Feedback to the Sysop".
HSet ──Set all new messages to not-new.
Used to set the current caller's last-message-read values to
that of the last message in each area. This is done for all
the message areas the caller is not locked out of and does
not have toggled OFF. Once done, all messages will be
considered read, and there will be no messages currently
considered new.
You could use message area toggling to protect one or more
areas, and then do this--but it is much easier to just read
the areas you want, then do this for whatever areas you do
not want to read.
IT:M <sysop> ──Integrity test message files.
This may be a menu command or an event.
It will check out your MESSAGES.HDR file and see if any of
the active messages have parts of their records bad.
Any errors found are displayed on the screen and recorded in
ERRORS.LOG.
You may use the reading messages "@" (header edit) command to
fix any problems.
See also: READING MESSAGES
Lock <sysop> ──Limit user(s) to a message area. [Lock _xxx]
Where "xxx" is the message area (001 to 999) in which to work
with.
This option will let the message-op lock out access to
message area "xxx" to a single user, or all users.
Remember that a message base must have "LOCK" in its
attributes for this to work.
"Lock _001" is the sysop version of this command--it will ask
which message area to work with. "001" because this is the
Private Mail (E-Mail) message area--which cannot be locked.
Locking a user out of an area will re-set their last-message-
read pointer.
The message-op cannot lock themselves out of the area.
This is the non-user "join conference" command. Users can
toggle messages areas ON/OFF, this allows sysops to toggle
users ON/OFF in a message area.
LsLk ──List users allowed in a message area. [LsLk _xxx]
Where "xxx" is the message area (001 to 999) in which to work
with.
It is a simple list of names.
If "xxx" is a message area without the LOCK attribute, then
all the active users will be listed (since they all have
access to the area).
See also: Lock
Mass <sysop> ──Mass mailing to users.
Send a message to all users of a certain security level value
range.
You must first create and message and store it in a message
file with the entering messages "%" command. You will be
asked for the message file number the message was stored as.
The software then sends a message, containing only "%%%xxx"
(where "xxx" is the message file number) to each user in the
security level value range you specified. Because there is
so little actual body text, the messages are extremely
efficient.
You may specify whether the message is to originate from you
or the AI. If from you, then you will be asked for a
subject.
MsgD ──Message downloading.
This will allow users to download messages using three
methods: .QWK, ASCII, and ANSI.
They are presented with a menu, from which they can: alter
the transfer list, download the transfer list, upload a .REP
packet, and move among the message areas.
To download messages, you first create a transfer list of the
messages you want. This can be as general as "NEW" (all new
messages in that area), or broken down into inclusion and
exclusion parameters.
Once a transfer list is made, the user may download the
messages as a .QWK packet, or as an ASCII or ANSI file. All
three methods compress the messages.
.QWK packets can be read by off-line mail readers. There are
quite a lot of these.
ASCII and ANSI are similar. They differ only in that ASCII
is the messages without any ANSI codes, and ANSI contains the
same ANSI codes as messages when displayed on-line. ASCII
can be viewed by any text listing program, but ANSI either
requires a more sophisticated lister, or use DOS's TYPE
command.
.QWK readers allow users to reply to those messages. These
reply's are stored in .REP packets, which the user again
uploads to the BBS. Hence the "Upload .REP packet" command.
Which unpacks the file are puts its messages into the message
areas.
Once a user downloads the messages successfully, they are
considered to be read by the user and no longer new to the
user. The download will be free (no bytes/time off).
The software can handle a user uploading multiple .REP files,
with multiple .MSG files, with multiple messages.
.QWK can be an alternative to net mail as a method of
updating one or more message areas common among one or more
BBS's. It is easier to use than net mail, but does require
the sysops to personally upload or download the .QWK and .REP
files.
To import a .QWK packet into the BBS, pull out its
MESSAGES.DAT file, rename it to MESSAGES.MSG, and then re-ZIP
it into a new file, giving it the extension ".REP". Then
choose to upload the message from the entering messages
options.
There is a setting for the maximum number of messages users
are allowed to pack at once.
The maximum allowed size of a packet is 1/2 the size of your
available drive space.
Detail note: If you do: include ALL and then exclude like
100-900 (and there are 1-1000 messages) (and max DL = 500)
then you will run into the max wall--even though what you
really want is only 200 messages. But the exclude will be
done, so you will at least get the 1-99 messages in this
case). Similarly if you have like 490 messages already
packed and the next area has lots of messages.
See also: .QWK Stuff, ENTERING MESSAGES, SETTINGS
NETa <sysop> ──Exchange net mail with members of a msg area. [NETa _xxx]
Where "xxx" is the message area (001 to 999) in which to work
with.
This command will attempt to contact and exchange net mail
with each net address for message area "xxx" in the routing
database.
This is usually used as an event option, but can be a
<ctrl>Fx command. It cannot be a menu command because it
calls out.
See also: NETMAIL AND ECHOMAIL
Nsys ──Leave a message to message-op of an. [Nsys or Nsys _xxx]
"Nsys" to leave a message to the message-op of the current
area.
"Nsys _xxx", where "xxx" is the message area (001 to 999) of
the message-op to send the message to. "xxx" will become the
current area.
The message is left in the same area. If it is a public
area, the message will also be public.
Can also be useful for letting all message base members
evaluate an applicant's request for access to the message
base. You lock them out initially, they apply for access,
all see the application, and all can give their opinion.
NxtM ──Go to the next message area.
This command will rotate forward through your message areas
looking for the next area a user has Scan-SL access to--or
until we come back to the current area.
When using the command, it is recommended you have a "show
current message area" smart code in your ANSI.
When at area N, where N is your highest message area, we then
rotate to area 001 and continue looking.
PrvM ──Go to the previous message area.
This command will rotate backward through your message areas
looking for the previous area a user has Scan-SL access to--
or until we come back to the current area.
When using the command, it is recommended you have a "show
current message area" smart code in your ANSI.
When at area 001, we then rotate to area N, where N is your
highest message area, and continue looking.
Rany ──Read messages in a message area. [Rany or Rany _xxx]
"Rany" to read the messages in the current message area.
"Rany _xxx", where "xxx" is a message area (001 to 999), to
read the messages in a specific area. "xxx" will become the
current area.
The user is first presented with an opportunity to select a
specific message or start at the first new message.
For private message areas; only the message-op will get the
"message number or New" question.
Rnew ──Read all messages that are considered as new.
When at the last message of an area, you are automatically
moved to the next area.
This function ignores any message bases the user has toggled
OFF.
The user is not given an opportunity to select specific
messages before displaying of messages is begun.
Rpnw ──Read all private to-you messages.
Read new private mail TO: a user.
Useful as a shuttle option.
Goes through and checks all private mail areas.
This option does not offer the user an opportunity to select
specific messages before displaying the first message.
Ryou ──Read all private messages to/from the user.
Read all private messages sent to the user or sent by the
user.
Goes through and checks all private mail areas.
The user is first presented with an opportunity to select a
specific message or new messages.
For private message areas; only the message-op will get the
"message number or New" question.
Sany ──List the messages in a message area. [Sany or Sany _xxx]
"Sany" to scan the messages in the current message area.
"Sany _xxx", where "xxx" is a message area (001 to 999), to
scan the messages in a specific area. "xxx" will become the
current area.
Scanning will produce a single line for each message.
Listing: number, who from who to, and subject.
Messages are listed from newest to oldest, with any new
messages highlighted.
Hitting "-" will restart the listing, in the opposite
alphabetical order (A-Z or Z-A, depending on what it was
doing.)
SelM ──Select/switch-to msg area. [SelM or SelM _Bxx or SelM _xxx]
"SelM" to produce a menu of all accessible message areas, and
ask the user to select one.
"SelM _Bxx", where "xx" is a block number from BLOCKS.TXT, to
produce a menu of all accessible message areas in the block,
and ask the user to select one.
"SelM _xxx", where "xxx" is a message area (001 to 999), to
simply switch to that message area (if the user has access).
The message area selected will become the current area.
With the "_Bxx": the text block should be made up of 3-
character message areas, of the form "xxxyyyzzz...". You may
create many lines of these 3 letter message areas. Example:
"001002003004005" for all areas 1 through 5. "001004006" for
areas 1, 4, and 6. Do not include the quotes. The order you
list them are the order they are listed in the selection
menu.
By "accessible message areas" this means that user has Scan
SL access to it, and has it toggled ON, and is not locked
out.
On the menu's: the currently active area is highlighted with
a "*" and areas with new files are colored white.
If no areas can be shown, the routine will not do anything.
No message-area-specific routines will be executed until a
valid message area is once again defined. So, even though
toggling everything off will get them past the "select area"
question and onto a "read/post/scan/quit" menu--they will not
be able to do "read/post/scan"--since they did not select an
area.
UnLk <sysop> ──Unlock (allow) user(s) to a message area. [UnLk _xxx]
Where "xxx" is the message area (001 to 999) in which to work
with.
This option will let the message-op unlock access to message
area "xxx" to a single user, or all users.
"UnLk _001" is the sysop version of this command--it will ask
which message area to work with. "001" because this is the
Private Mail (E-Mail) message area--which cannot be locked.
See also: Lock
Zmsg ──Undelete messages.
There are three different levels: user, message-op, and
sysop. Anyone may use the command, without accessing
messages outside their level.
Users are allowed to undelete messages to/from them in an
area.
Message-op's are allowed to undelete any messages in an area
in which they are message-op.
Sysops are allowed to undelete any message in any area.
You will be given a listing of both the deleted and active
messages. You can tell the difference by whether the "abc"'s
are flashing (active) or not (deleted/dead).
Choosing the message will display it. If the message is
deleted, you will then be given the opportunity to undelete
it.
The message-op or sysop will also be allowed to enter a
message number to start listing from at the option command
line.
This routine will dredge up messages from "replaced" message
bases as well. That is, if you deleted a message base, and
created a new one, any deleted messages from the first
message base would still appear (only Packing will eliminate
them for good).
For the already-purged messages: use a text editor to break
a message out of DEL_MSGS.TXT and Import it as a new message.
If you undelete a message, the software will rebuild the
messages index for that area when you are done with all the
undeleting you want to do.
File Commands These commands are file or file area related.
See also: FILE AREAS, FILE AREA CONTENTS LISTING, UPLOADING,
DOWNLOADING, TOGGLES, SETTINGS
AddB ──Add to the download batch.
The software maintains a global download batch. It is the
download with the P&S system, it can be accessed in the Paged
File System, and it can be accessed with the "AddB", "CntB",
and "Z dn" commands.
The download batch can hold up to 100 file names.
This command just asks the user for a file name, checks that
the user has enough minutes and bytes to download it, and
adds it to the download batch.
See also: Z dn, P&Sx, CntB, PagF
ARvw ──Add a file review to the reviews files.
The reviews files are displayed after a file area contents
listing when using the "LstF" command, or with a special
command when using the "PagF" type commands.
These files are stored as REVIEWS.xxx, where "xxx" is the
file area (eg. "001" for your file area 001).
The lines of the files are formatted to 78 characters. The
first character is a "3", followed by either a 12 character
file name or 12 spaces, followed by a 65 character
description segment.
Along with the review, the user's name will be added.
If the user was the uploader of the file, then "(uploader)"
will also be added. This is done to warn other users that
the reviewer may be biased toward the file, and that the
review should be taken with a grain of salt.
If the user's Show SL is the lowest of your SL's, then
"(Level x)" is added (where "x" is the Show SL value). This
is done to warn other users that this review was probably
made by an inexperienced user (they have your lowest SL after
all), and should be taken with yet another grain of salt.
If the user uploaded the file, this option will allow them
the chance to either add a review or change the description.
If the file is an <incomplete>, or an extracted file
(EXTRACT.ZIP), no review will be allowed.
File reviews can be deleted from the file by you with a text
editor. They are automatically deleted when the file to
which they pertain is deleted. You may also use "RemL"
("Remove A Line)" to delete reviews.
Null/blank lines in the review files are also deleted if they
are found. To keep blank lines in the reviews file, they
should contain at least one space on the line.
There is a toggle which allows automatic insertion of
FILE_ID.DIZ description files from uploads into reviews.
See also: RemL, TOGGLES
Asst ──AI ask user to delete a file.
If there is very little drive space, this routine, acting as
the AI, will ask users of proper security levels to use their
Life & Death delete ability to remove a file.
Files with L&D values greater than zero are not shown.
Invisible files do not show up.
Files in areas to which the caller does not have access are
also not shown.
No files are actually deleted with this routine. It is just
a plea for help to make space.
You should use an "ifSL" to stop users you do not from seeing
this in your login loop.
See also: SETTINGS, TOGGLES
BiMd ──BiModem file transfer.
BiModem handling. Use this if you want BiModem protocol
support.
It relies on the menu's security level to stop access--unlike
auto-detect of BiModem which has a Setting for its minimum SL
value.
Files uploaded with this option are placed in file area 001.
If you do not maintain a BiModem password file for your
invisible files, callers will be able to download them (if
they can somehow figure out the file name) using BiModem.
CntB ──List the contents of the download batch.
This command will list the file names and their sizes that
are in the download batch.
After listing, it will offer the user a chance to delete any
entries if they want.
See also: AddB
DecC <sysop> ──Decrease DeathCount values by one.
While it can be a regular menu command, it is mainly used as
an event--to execute each night or every other night.
When used, DeathCount values for each file will be reduced by
one.
It does not reduce DeathCount values greater than 9, since
these are Life & DeathCounts.
Deleted files are similarly effected (no escaping the AI even
in death).
Desc <sysop> ──Import an external files descriptions list.
This option will read in a text file containing file names
and descriptions, and convert it to FILELIST (JDR_BBS)
format.
It is useful for converting FILES.BBS type files, or for
adding a lot of descriptions at once.
The new entries are appended to the end of the current
FILELIST file if they do not already exist. If they do
exist, they will be updated with the new description.
You will be asked for an area. This does not matter if the
files already exist, but for new files you should specify the
area to which most of the descriptions apply (to reduce
automatic "file area corrected" corrections).
File names in the text file must occupy the first 12
characters. "filename.ext", "filename ext", "file.ext ",
"file ext ", "file ext", "file .ext" are all valid.
The file to be read in is not deleted.
File <sysop> ──Edit a files' record.
Use to modify the fields of an individual active file's
record.
When entering attributes use a 1234567890ABCDEF letter for
each bit you want to set (1 = bit 1, D = bit 14, etc.)
The attribute bits are:
Bit 1 ON if file is deleted.
Bit 2 ON if file is free.
Bit 3 ON if file in unvalidated.
Bit 6 ON if file is invisible.
Bit 7 ON if file is <incomplete>.
Bit 8 ON if file is a user created extract file.
Bit 9 ON if file is free only to 9600+ baud callers.
Entering a "1" for an attribute will delete the file.
If you set "3" OFF, then you will be prompted for whether or
not to credit the uploader for the upload (give them minutes
and bytes). You can give a user multiple credit for an
upload by first turning this OFF, then ON, then OFF again,
etc.
Entering a new description clears that file's <incomplete>
and invisible attributes.
If you give it a different File Area value, the software will
attempt to move the file to the new area.
You can enter a maximum password of 30 characters. The
password itself is stored as a checksum number--it identifies
correct and wrong passwords, but does not use up so much
space nor make the password available for anyone to see.
If you want to protect your passworded, or invisible, files
from BiModem, you must use BiModem's password system also.
This involves running BiConfig and specifying a password file
(such as C:\BBS\BIPASS.PTH). Then using a text editor to
edit this file. This file is made up of individual lines
following the format: pathname,password (example:
C:\BBS\JDR\TEST.ZIP,MYPASS").
Internal password handling allows for multi-word passwords
and just about any typable character. However, BiModem may
have some restrictions on size, words, or characters. If
interested in more than a simple password, you should also
check BiModem's documentation.
FREE ──Download a file for free. [FREE _pathname]
Where "pathname" is any valid, and complete, DOS pathname to
a file (eg. "c:\uploads\hello.zip". If you use wildcards,
then all matching files will be sent.
The file will be downloaded to the user. The user will not
lose any bytes or minutes for the download, and it will not
be recorded in their download stats.
The security level of the file area which contains the file
does not matter and is not taken into account.
The pathname does not need to be one of your file areas.
IT:F <sysop> ──Integrity test of the various file files.
This can be an event or a menu command.
It will check out your FILELIST file and see if any of the
active files on-line have parts of their records bad.
Any errors found are displayed on the screen and recorded in
ERRORS.LOG.
KilF <sysop> ──Delete a file anywhere.
Kill a file anywhere given the drive:path\filename
(pathname).
You should not use this to remove an active file from the
download directories, since the filename will still be active
until you next restart the BBS. Use "RemF" instead.
See also: RemF
L&Dx ──Alter the L&D value of a file.
Allows users to alter the Life and Death Count values of the
files on-line available for download. They can only alter
one file per day by a single point.
Users cannot modify files for which they uploaded. They may
try to keep it up by increasing the L&D count. They also may
upload bad stuff knowing that they can help speed its
removal.
A user may only delete a file when all of the below are true:
They have high enough SL.
There is less than a defined number of bytes on the drive.
It is toggled ON.
The L&D count is currently at zero.
A user may not increase the count if it is 9, +9, or blank.
Since this is like stopping daily auto-reduction.
See also: SETTINGS, TOGGLES, Asst
LstF ──List files. [LstF or LstF _xxx or LstF _Bxx or LstF _all]
This will list file files in a file area in a continuous (no
paging) display. The user may hit [Space] to pause the
display, or [Enter] to stop it.
"LstF" will list the files in the current file area.
"LstF _xxx", where "xxx" is a file area (001 to 999), will
list the files in that file area.
"LstF _Bxx", where "xx" is a block number in BLOCKS.TXT, will
generate a menu of all the accessible file areas specified,
and ask the user to select one. It will then list the files
in this file area.
"LstF _all" will generate a menu of all the accessible file
areas, and ask the user to select one. It will then list the
files in this file area.
Whatever the command, the new "current file area" will be the
file area specified.
No area will be accessed, or displayed in the menus, unless
the user has Scan-SL enough for that particular area.
With the "_Bxx": the text block should be made up of 3-
character file areas, of the form "xxxyyyzzz...". You may
create many lines of these 3 letter message areas. Example:
"001002003004005" for all areas 1 through 5. "001004006" for
areas 1, 4, and 6. Do not include the quotes. The order you
list them are the order they are listed in the selection
menu.
For the menus: the currently active area is highlighted with
a "*" and areas with new files are colored white. If you
find an area entry always white--when there are no new files-
-then go to "File Areas" and fix that area's HiFilePtr value-
-it must have some how gotten too large.
With the "LstF" and "LstF _xxx" commands, the user will be
given a message; "Sorry, security too low for this area", and
the contents will not be listed if their security level is
too low. This allows you to show them that an area exists,
but that they just cannot (yet) access it.
See also: FILE AREA CONTENTS LISTING
LUnV <sysop> ──List unvalidated files.
This command will list any files, in areas to which the user
has file-op status, that are considered unvalidated.
For files to be unvalidated, they must have their attribute
bit 3 set to ON.
For files to become unvalidated, one must either set bit 3,
or have the software do it when the file is uploaded.
See also: TOGGLES, ValF, File
MLDL ──Download the Master List file.
This command will begin sending the appropriate MASTER.ZIP
file for that user's security level.
Do not have this command available if you have the master
list creation routine create the master lists directly into
your file areas, as this command will delete the file after
transfer--since a temporary MASTER.ZIP is created from
MASTER.ZIx.
The download will be free to the user (no bytes/time off).
See also: MLsC
MLsC <sysop> ──Create the Master Lists.
This command may be either a menu command or an event.
This creates Master List(s) of your file areas so that your
users may download it.
It looks at the security level values you have in your file
areas, and will create up to 9 individual Master List
archives (one for each file area access security level tier).
You may use either "MLDL" to allow a user to download the
appropriate list or you may have this routine put the
resulting archive directly into a file area.
If a file area has no files in it, or has the TRANS attribute
ON, then it will not be included in the lists. The TRANS
restriction is because the area contents will probably change
before the user can make use of them. Where this theory
breaks down, however, is if you have a transient area that
changes like once a month. In that case, I would recommend
you turn OFF TRANS, and just set the SL to like 32000 for the
not-in-use file area(s) (that is, only give the areas to
which the current CD-ROM use low enough SL).
See also: MLDL
NewD ──Select old "new stuff" date.
This command allows a user to change their "what's new" date.
It asks for a date, and attempts to come up with a HiFilePtr
from FILELIST that is on the day before that date. Since it
is the user's HiFilePtr value that is really being changed
(so it affects Ramblings and Requests also).
Mainly used to set a "new files" pointer date to something.
NxtF ──Go to next file area.
This command will attempt to move the user to the next file
area to which they have access. When we reach area N, where
N is your highest file area, we start again at 001. It will
try to find the next area until an area to which the user has
a valid Scan-SL is found, or we return to the current area.
When using the command, it is recommended you have a "show
current file area" smart code in your ANSI.
P&Sx ──Point & shoot file subsystem.
Jump into the Point & Shoot file system. This is the menu
version of "hitting "." while listing files available for
download."
The files you tag ON/OFF for download are part of the
download batch.
See also: FILE AREA CONTENTS LISTING, AddB
PagA ──Paged file area contents listing (all accessible areas).
This command will cycle through all file areas, from 001 to
your last one, and list the contents in that area.
It is like doing a "PagF _xxx" for each area.
See also: PagF
PagF ──List files. [PagF or PagF _xxx or PagF _Bxx or PagF _all]
This will list the files in a file area with a paged (not
continuous) display. At the end of each screenful an
extensive command set is available to the user.
"PagF" will list the contents of the current file area.
"PagF _xxx", where "xxx" is a file area (001 to 999), will
list the contents of that file area.
"PagF _Bxx", where "xx" is a block number in BLOCKS.TXT, will
generate a menu of all the accessible file areas specified,
and ask the user to select one. It will then list the files
in this file area.
"PagF _all" will generate a menu of all the accessible file
areas, and ask the user to select one. It will then list the
files in this file area.
The user will not be able to access, or know about, any areas
to which his Scan-SL is too low.
The selected file area will become the current file area.
With the "_Bxx": the text block should be made up of 3-
character file areas, of the form "xxxyyyzzz...". You may
create many lines of these 3 letter message areas. Example:
"001002003004005" for all areas 1 through 5. "001004006" for
areas 1, 4, and 6. Do not include the quotes. The order you
list them are the order they are listed in the selection
menu.
For the menus: the currently active area is highlighted with
a "*" and areas with new files are colored white.
See also: FILE AREA CONTENTS LISTING
PagN ──Paged file area contents listing (new files).
This command will cycle through all file areas, from 001 to
your last one, and list all new files since the user's last
call.
See also: PagF
PagQ ──Paged file area contents listing (ask what to do).
This command combines "PagA", "PagF", "PagN", and "PagS" into
a single command.
It asks a question about what to do, and then executes one of
the above commands.
See also: PagA, PagF, PagN, PagS
PagS ──Paged file area contents listing (by search match).
This command will cycle through all file areas, from 001 to
your last one, and list all files that match a specified
search string.
See also: PagF
PrvF ──Go to previous file area.
This command will attempt to move the user to the previous
file area to which they have access. That is, the active
file area number is reduced until it finds an area to which
the user has Scan-SL access, or we return back to the same
file area.
When at area 001, it then goes to area N--where N is your
highest file area.
When using the command, it is recommended you have a "show
current file area" smart code in your ANSI.
RemF <sysop> ──Remove a file.
Deletes the file, updates ALSO_GOT.LST with the filename and
description, and removes any reviews the file has. This is
the proper way to remove files formerly available for
downloading.
Only the first occurrence of the file is deleted. It checks
all directories in the order they were configured (which
usually means uploads first--preferable). Example: if a user
uploads a file to the uploads directory that has the same
name as something in another downloadable directory, then you
can safely delete it without affecting the one in the other
directory. However, any reviews will be deleted, and both
descriptions--so you will need to re-do the description.
<incomplete> files do not have their entry subsequently put
into ALSO_GOT.LST.
Entries are removed from all the reviews files--not just the
reviews file for that area.
Unlike everywhere else, you will need to hit [Enter] after
entering the file name. This confirms the file name that
auto-filename-detect gives you.
Should you accidentally delete a file, and you are at the
console, do an immediate <alt>x (<alt>x, when not done at the
waiting-for-caller screen, is an immediate exit to DOS).
Then run your undelete or unerase program (I keep mine on a
utilities floppy). The longer you wait, the higher the
probability that something will overwrite the file.
See also: KilF, UPen
SelF ──Select file area. [SelF _xxx or SelF _Bxx or SelF _all]
This command will switch to another file area, making that
file area the current file area.
"SelF _xxx", where "xxx" is a file area (001 to 999), will
switch to that file area. No SL checking is done.
"SelF _Bxx", where "xx" is a block number in BLOCKS.TXT, will
generate a menu of all the accessible file areas specified,
and ask the user to select one. It will then switch to the
selected file area.
"SelF _all" will generate a menu of all the accessible file
areas, and ask the user to select one. It will then switch
to the selected file area.
The user will not be able to access, or know about, any areas
to which his Scan-SL is too low with the menu commands.
With the "_Bxx": the text block should be made up of 3-
character file areas, of the form "xxxyyyzzz...". You may
create many lines of these 3 letter message areas. Example:
"001002003004005" for all areas 1 through 5. "001004006" for
areas 1, 4, and 6. Do not include the quotes. The order you
list them are the order they are listed in the selection
menu.
For the menus: the currently active area is highlighted with
a "*" and areas with new files are colored white.
If the user cannot access any of the selected areas, the
routine will simply not do anything. No file-area-specific
commands will be executed until a proper file area is once
again defined.
Srch ──Search the on-line and off-line lists.
This routine searches your file lists. Users should call
this before doing any uploads to make sure you do not have
it.
Searches are done according to the order you have placed the
files in the Search Files database.
This particular command is used for uploading also, it
searches both your off-line lists and on-line file
descriptions for a match.
Even though I say "off-line file lists"--you can search any
text file with this. I use it to search the off-line lists
I have created (such as ALSO_GOT.LST which the BBS adds to
when you delete files). But you could, for example, have it
search a product list, a BBS list, or anything else.
For lines greater than 80 characters, it wraps it beginning
the new line at column 40.
See also: TOGGLES
Src1 ──Search off-line lists.
This command is a partial "Srch", it will only search the
off-line list files.
See also: Srch
Src2 ──Search on-line descriptions.
This command is a partial "Srch", it will only search through
the on-line (active) files descriptions.
Also, this option (and not "Srch") will exclude searching
those file areas to which the user does not have access
(because of low SL).
To search only the on-line areas without the SL restriction,
use "Srch" but with an empty Search Files database (that is,
do not define any off-line file lists to search).
See also: Srch, PagS
SysD <sysop> ──Download a file that is in any directory.
You must enter the full drive:path\filename (pathname) of the
file you wish to download.
The transfer is done by shelling to DOS and executing the
user's protocol selection (so do not make it a waiting-for-
caller command).
No statistics are affected.
SysU <sysop> ──Upload a file to any directory.
You must enter the full drive:path\filename (pathname) to
locate the file(s) you wish to upload. If uploading to a
downloads directory, it will not automatically ask you for a
description.
The transfer is done by shelling to DOS and executing the
user's protocol selection (so do not make it a waiting-for-
caller command).
No statistics are affected.
TgtU ──Targeted upload.
This does an uncredited upload with BiModem. Any downloading
done is credited. A chance for your users to be altruistic--
while at the same time saving yourself from putting up some
old file from your off-line storage.
Files uploaded with this option are placed in file area 001.
Users can get around making the files public by using file
attaches with a message. But I recommend you discourage this
for large files--the drain on your resources is too great,
and they could just as well phone each other and do the
transfer.
Target Upload is similar to a file attach to a public
message--but by putting the file in the uploads area, more
people get a chance to notice, and grab, it.
Before transfer, the destinee's name must be given. If they
give the sysop's name, or ALL, then they are told to use the
upload command, not this.
After the transfer a short message is sent to that name, and
told the file was put up for them.
You may specify a setting as to what is the minimum drive
space available to allow a user to execute this command.
Since this command is for users convenience, it is not
appropriate for them to eat up all your drive space with
specific (duplicate to you) uploads.
See also: SETTINGS
UPen <sysop> ──Delete file and penalize uploader.
Remove a file and penalize a user with "double bytes off" for
the size of the file. Also sends them a message saying what
happened.
Uploads are reduced by one. Minute-credits are reduced by
the amount normally given for the file size (which is based
on 2400 baud transfer time--they could lose twice if they
forgot to leave a description). Bytes off are based on a
multiplier that you can configure.
If you require uploads to be validated before the uploader
gets credit, or the file is <incomplete>, then the uploader
will lose twice what a user who got credit would lose.
You may toggle off the sending of the message.
There is no single message. To change the message, change
the various LINES.TXT lines that contain the text of the
message now.
See also: RemF, SETTINGS, LINES.TXT
Upld ──Upload. [Upld or Upld _xxx or Upld _Bxx or Upld _all]
This command handles file uploading to a file area.
"Upld" will upload to the current file area.
"Upld _xxx", where "xxx" is a file area (001 to 999), will
upload to that file area.
"Upld _Bxx", where "xx" is a block number in BLOCKS.TXT, will
generate a menu of all the accessible file areas specified,
and ask the user to select one. It will then upload to this
file area.
"Upld _all" will generate a menu of all the accessible file
areas, and ask the user to select one. It will then upload
to this file area.
The user will not be able to access, or know about, any areas
to which his Upload-SL is too low, or which do not have the
"UPLD" file area attribute.
The selected file area will become the current file area.
With the "_Bxx": the text block should be made up of 3-
character file areas, of the form "xxxyyyzzz...". You may
create many lines of these 3 letter message areas. Example:
"001002003004005" for all areas 1 through 5. "001004006" for
areas 1, 4, and 6. Do not include the quotes. The order you
list them are the order they are listed in the selection
menu.
For the menus: the currently active area is highlighted with
a "*" and areas with new files are colored white.
If the user is not allowed to upload to the current area, an
attempt is made to upload to area 001 instead.
The protocol used is whatever the user has previously
selected.
ValF <sysop> ──Validate a users' upload.
This is a quicky way of validating a file.
You do the exact same thing by going into File Maintenance
and clearing a file's attribute bit 3.
This simply asks for a file name. If the file is unvalidated
it will validate it (clear bit 3) and give the uploader the
same credit they would have gotten had the "all uploads are
unvalidated" toggle been off.
If a file's description is less than three characters, it
will not give them minute-credits credit for the upload. The
uploader can get these credits by using "Add A Review" to
give the file a proper description.
See also: LUnV, ARvw
Xchg ──Exchange bytes and minutes.
Trade Download Minute-Credits for Download Megabytes.
Provides a system by which users can alter their download
limits depending on their need. Sometimes they need time,
sometimes bytes.
The software does exchanges on its own in many situations to
help the user, this just allows them to do it themselves
also.
If the user is unable to do one or the other type of exchange
(does not have the minimum exchange rate) then it will say
so.
Z dn ──Download files.
This routine allows users to download of any files in the
download directories that they are able to.
The user can only enter file names until the end of the line,
just before the end the software might do an automatic
[Enter] for them and start the download process.
If the download batch is not empty, they are first asked if
they wish to download that.
The display for downloading shows a variety of information:
total size of uploads, total size of downloads, UL/DL current
ratio, UL/DL ratio for their level, bytes remaining till
upload required, minutes left for downloading, and number of
files, size, and time for their chosen downloads. None of
these numbers take into account what is in the download
batch.
A user cannot "trick" this software by first putting a bunch
of files in the download batch, then downloading here, then
downloading the batch. Any files in the batch that the user
does not have enough time/bytes left to download will be
removed from the batch when they choose to download the
batch.
Usually, "bytes uploaded" * ratio = "bytes downloaded" +
"bytes available to download". Some discrepancies appear as
more minute/byte exchanges are done.
The file names implement auto-detect, but no wildcards are
allowed.
See also: AddB
CREATED The menu command system is a building block system. You pile
COMMANDS commands on top of each other forming new commands. Below is
a list of the commands I created for the BBS interface as it
is set up now. They are all in "Created Cmds 1", "Created
Cmds 2", and "Created Cmds 3". Feel free to do with these
whatever you want.
Commands
+net ──SelM _B37 >012
Ask for which (net) message area to change to (SelM _B37)
then goto net menu (>012).
ARe2 ──ifSL _10 _001 AReq >001
If user's SL is less than 10, then goto main menu (ifSL _10
_001), else add a request (AReq), then goto main menu (>001).
ARv2 ──ARvw >001
Do a file review (ARvw), then return to main menu (>001).
Ask1 ──AnsQ _001
Ask the questions for questionnaire #1.
BBSX ──ifSL _20 Revw
If user's SL is less than 20 then return to the menu (ifSL
_20), else access the BBS review system (Revw).
BiMx ──ifSL _10 BiMd
If user's SL is less than 10 then return to the menu (ifSL
_10), else do BiModem transfer (BiMd).
Bsts ──Sts1 Paus Sts2 Paus Sts3 Paus Sts4 Paus Sts5 Paus Sts6 Paus
Show each of the internal "best users" screens, followed each
by a "Paused".
Dir1 ──DirV _D02
Show musical quotes Directry (#02).
Dir2 ──DirV _D03
Show ANSI's Directry (#03).
Dir3 ──DirV _D01 >001
Show uprotects Directry (#01)(DirV _D01), then return to the
main menu (>001).
Dor1 ──DOOR _shrink _002
Shell-to-DOS to execute a door (DOOR). But swap to disk
first (_shrink). Then run the .GIF viewer (#002).
Dor2 ──DOOR _full _001
Shell-to-DOS to execute a door (DOOR). But completely exit
first (_full). Then run the text editor (#001).
Shelling is much more desirable, but this will allow you to
modify LINES.TXT, BLOCKS.TXT, and SHORTS.TXT without screwing
up the system.
Ent1 ──Eany _001
Leave a message (Eany) in the Private Mail area (#001) to
another user.
Ent2 ──Eany _002
Leave a message (Eany) in message area #2 (#002).
Ent3 ──Eany _003
Leave a message (Eany) in message area #3 (#003).
FdB2 ──FdBk >001
Do Feedback to sysop (FdBk), then return to main menu (>001).
FdBk ──Esys _001
Feedback. Send a private message to sysop (Esys) of the
Private Mail area (#001).
JDR@ ──dBLK _B63 Paus
Show the text in BLOCKS.TXT block number 63 (dBLK _B63), then
do a "Paused" (Paus).
Job1 ──ifSL _20 Jobx
If user's SL is less than 20 then return to the menu (ifSL
_20), else access the skills database (Jobx).
L&D1 ──ifSL _10 L&Dx
If user's SL is less than 10 then return to the menu (ifSL
_10), else modify L&D values (L&Dx).
Lasx ──Last Paus
Show last few callers (Last), then do a "Paused" (Paus).
Lst1 ──LstF _001 DReq
List the contents (LstF) of file area #001, then display
requests (DReq).
LstF _001 LstF _002 LstF _003 DReq
Would list file areas 1, 2, and 3 then display requests.
MLD2 ──MLDL >001
Download the Master List (MLDL) then return to the main menu
(>001).
Msts ──USAs dANS _c:\bbs\node.???\ansi\top5.ans ENTR StsT Paus
Show the breakdown by states stats screen (USAs), then
display the top5 stats screen (dANS
_c:\bbs\node.???\ansi\top5.ans), then wait for the user to
hit [Enter] (ENTR), then display the internal total stats
screen (StsT), and finally do a "Paused" (Paus).
New2 ──NewS >001
Do New Stuff (NewS) then return to main menu (>001).
P&S1 ──P&Sx DReq
Do P&S file system (P&Sx), then display the requests list
(DReq).
P&S2 ──P&Sx DReq >001
Do P&S file system (P&Sx), then display the requests list
(DReq), then return to main menu (>001).
Pag1 ──PagQ DReq
Do the Paged File system (PagQ), then display the requests
list (DReq).
Pro1 ──dANS _c:\bbs\node.???\ansi\profile1.ans Paus
Show profile screen 1. Display the ANSI (dANS
_c:\bbs\node.???\ansi\profile1.ans), the do a "Paused"
(Paus).
Pro2 ──dANS _c:\bbs\node.???\ansi\profile2.ans Paus
Show profile screen 1. Display the ANSI (dANS
_c:\bbs\node.???\ansi\profile2.ans), the do a "Paused"
(Paus).
Prof ──Pro1 Pro2 ProA Paus ProB Paus
Show profile screen 1 (Pro1), then show profile screen 2
(Pro2), then show profile averages screen (ProA), then do a
"Paused" (Paus), then show profile message areas screen
(ProB), then do a "Paused" (Paus).
Ram2 ──Ramb >001
Do ramblings (Ramb) and then go back to main menu (>001).
Rd01 ──Rany _001
Read messages (Rany) in Private Mail area (#001).
Rd02 ──Rany _002
Read messages (Rany) in message area #2 (#002).
Rd03 ──Rany _003
Read messages (Rany) in message area #3 (#003).
SHUT ──st_1 st_A >sht
Display the BBS's logo (st_1), then login the user (st_A),
and then go to the shuttle menu (>sht).
If you want a shuttle menu, this would be the command you
have in "Change Settings" for "First Command" rather than
"STRT".
I ask for the user's name before the shuttle menu because
some of the shuttle commands require that name. To bring up
the shuttle menu first, just adjust the commands that require
names by putting a "LogN" in front of each of them.
STRT ──st_1 st_A st_B Call Dnws Lasx st_2 Vot1 st_3 PRvw Asst LUnV
>001
This is a normal "First Command". "First Command"'s are set
are set in "Change Settings" and define what command will
first be done when a user connects.
It displays the BBS's logo (st_1), logs in the user (st_A),
welcomes the user and does new mail check (st_B), does call-
back verification if the user needs to pass (Call), displays
the BBS's news files (Dnws), shows the last few callers
(Lasx), then if the user is below level 10 they are exited to
the main menu (st_2).
If the user is level 10 or higher then they continue and we
see if there are any voting questions for them (Vot1), then
if the user is below level 20 they are exited to the main
menu (st_3).
If the user is level 20 or higher then they continue and we
see if there are any peer review voting to be done (PRvw),
then the AI will check to see if any L&D deleting can be done
(Asst), then if the user matches a file-op's name they are
told of any unvalidated files in a file area (LUnV), finally
we exit to the main menu (>001).
Scn1 ──Sany _001
List the messages (Sany) in the Private Messages area (#001).
Scn2 ──Sany _002
List the messages (Sany) in message area #2 (#002).
Scn3 ──Sany _003
List the messages (Sany) in message area #3 (#003).
Sel2 ──SelM _B37
Bring up a quick selection menu (SelM) for the NetMail areas
(which are areas 004 and 005, and block #37 = 004005) to
switch to.
Shut ──Spwd st_B Call Dnws Lasx st_2 Vot1 st_3 PRvw Asst LUnV >001
Actually logon from the shuttle menu. First we ask for the
shuttle password (Spwd), then we display the welcome and show
new mail (st_B), then we do call-back verification if
required (Call), then any BBS news is displayed (Dnws), then
the last few callers are shown (Lasx), then if the user is
less than level 10, then are exited to the main menu.
The rest just follows the same as "STRT".
Shw1 ──ShwQ _001
Show the answers to questionnaire (ShwQ) number 1 (#001).
st_1 ──dANS _c:\bbs\node.???\ansi\logo.ans ENTR
Display the BBS logo (dANS _c:\bbs\node.???\ansi\logo.ans)
and wait for the caller to press [Enter].
st_2 ──ifSL _10 _001
If user's security level is < 10 (ifSL _10), then exit to
menu id 001 (main menu #001).
st_3 ──ifSL _20 _001
If user's SL is less than 20 (ifSL _20), then exit to menu ID
001 (main menu #001).
st_A ──dANS _c:\bbs\node.???\ansi\login.ans LogN
Display the login ANSI (dANS _c:\bbs\node.???\ansi\login.ans)
then get the user's name and other info.
st_B ──dANS _c:\bbs\node.???\ansi\welcome.ans Welc
Display the welcome ANSI (dANS
_c:\bbs\node.???\ansi\welcome.ans) then display the messages
waiting for the user.
TgUx ──ifSL _20 TgtU
If user's SL is >= 20 (ifSL _20), then let them do target
uploading (TgtU).
txt1 ──dTX3 _c:\bbs\text\details.txt Paus
Display the DETAILS.TXT file in date-on-top method (dTX3
_c:\bbs\text\details.txt), and then do a "Paused" at the
bottom (Paus).
txt2 ──dTX5 _c:\bbs\text\info.txt
Display the INFO.TXT file in paged-screens method (dTX5
_c:\bbs\text\info.txt).
txt3 ──dTX4 _c:\bbs\text\history.txt Paus
Display the HISTORY.TXT file in continuous-box method (dTX4
_c:\bbs\text\history.txt), with a "Paused" at the end (Paus).
USAs ──dANS _c:\bbs\node.???\ansi\stats_us.ans ENTR
Display the 50-state breakdown ANSI (dANS
_c:\bbs\node.???\ansi\stats_us.ans), and then wait for the
user to hit [Enter].
Up01 ──Upld _001
Let the user do an upload (Upld) to area 1 (#001).
Ver2 ──Vers >001
Show version info (Vers), then return to the main menu
(>001).
Vt10 ──ifSL _10 Vot0
If user's SL is >= 10 (ifSL _10), then let them vote (Vot0).
Wsts ──Sts7 Paus Sts8 Paus Sts9 Paus Stsz Paus Stsy Paus Stsx Paus
Display many statistics screens with "Paused"'s at the end of
each one.
Final Notes A lot of the created "Do something, then go back to main
menu" commands are because of that "FMENU" (second file menu)
trickery I do. It has to redraw the full main menu after
each command--not just FMENU.ANS--because we do not know if
it was fully drawn the first time).
EXAMPLE
┌───────────────────────────────────────────────────────────┐
│ STRT is: st_1 st_A st_B Call Dnws Lasx st_2 Vot1 st_3 │
│ PRvw Asst LUnV >001 │
│ │
│ As a new sysop, you decide that you do not want Peer │
│ Reviewing. So, to reduce clutter in your start up line, │
│ you take "PRvw" out: │
│ │
│ STRT is: st_1 st_A st_B Call Dnws Lasx st_2 Vot1 st_3 │
│ Asst LUnV >001 │
│ │
│ As a new sysop, you decide that you do not want call-back │
│ verification. So, to reduce clutter in your start up │
│ line, you take "Call" out: │
│ │
│ STRT is: st_1 st_A st_B Dnws Lasx st_2 Vot1 st_3 Asst │
│ LUnV >001 │
│ │
│ As a new sysop, you decide that you do want to let all │
│ users vote. So, you remove the SL restriction (st_2) │
│ before voting (Vot1): │
│ │
│ STRT is: st_1 st_A st_B Dnws Lasx Vot1 st_3 Asst LUnV │
│ >001 │
│ │
│ Then you decide that you want to delete your own files, │
│ no AI asking users for help (Asst): │
│ │
│ STRT is: st_1 st_A st_B Dnws Lasx Vot1 st_3 LUnV >001 │
│ │
│ Then you decide uploads should be given immediate credit, │
│ so there is no need to bother you at each login about │
│ unvalidated files (LUnv): │
│ │
│ STRT is: st_1 st_A st_B Dnws Lasx Vot1 st_3 >001 │
│ │
│ The you realize the SL restriction (st_3) is meaningless, │
│ so you remove it: │
│ │
│ STRT is: st_1 st_A st_B Dnws Lasx Vot1 >001 │
│ │
│ Now you are left with a start-up command that: displays │
│ the BBS logo (st_1), displays the login ANSI and gets the │
│ user's name (st_A), displays the welcome ANSI and new │
│ mail (st_B), displays any news (Dnws), shows the last few │
│ callers (Lasx), handles any un-voted-on questions (Vot1), │
│ and exits to the main menu (>001). │
│ │
│ Note: Leaving in, or taking out, "PRvw", "Call", and │
│ "Asst" does not matter if you have these turned off │
│ already. │
└───────────────────────────────────────────────────────────┘
Misc. Remember also the <control>Fx key definition system. It uses
a single 4 letter command as its "what to do". Allows you to
create a wide variety of stuff for the waiting-for-caller
screen.
If you have "files must be validated before credit given" ON,
then you might want to set up a "validate files" menu. This
menu could contain: list unvalidated, work on ZIP's, shell to
dos, penalize uploader, remove file, etc. Whatever you deem
helpful.
NEXT NOT_DOCS or TECHDOCS for when you want to know still more.